假设我有以下切片:
let src = &[7, 4, 5, 0, 3, 6, 0, 2, 5];
我需要执行两个步骤:1.搜索这个切片,直到找到第一个0;1.返回所有元素直到找到的元素。对于上面的切片,返回值将是:
0
let res = &[7, 4, 5, 0];
然后搜索将在找到的0之后的第一个元素处再次开始,返回:
let res = &[3, 6, 0];
等等...如何用Rust迭代器写这个?
mwkjh3gx1#
你可以使用split_inclusive来获得你想要的结果的迭代器,例如。
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);
1条答案
按热度按时间mwkjh3gx1#
你可以使用
split_inclusive
来获得你想要的结果的迭代器,例如。