rust 如何使用迭代器搜索并返回切片的范围?

oyt4ldly  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(129)

假设我有以下切片:

let src = &[7, 4, 5, 0, 3, 6, 0, 2, 5];

我需要执行两个步骤:
1.搜索这个切片,直到找到第一个0;
1.返回所有元素直到找到的元素。
对于上面的切片,返回值将是:

let res = &[7, 4, 5, 0];

然后搜索将在找到的0之后的第一个元素处再次开始,返回:

let res = &[3, 6, 0];

等等...
如何用Rust迭代器写这个?

mwkjh3gx

mwkjh3gx1#

你可以使用split_inclusive来获得你想要的结果的迭代器,例如。

let src = &[7, 4, 5, 0, 3, 6, 0, 2, 5];

    let mut calc = src.split_inclusive(|n| *n == 0);

    let res1 = &[7, 4, 5, 0];
    let res2 = &[3, 6, 0];

    assert_eq!(calc.next().unwrap(), res1);
    assert_eq!(calc.next().unwrap(), res2);

相关问题