给定一个
Vec<i32>
,我想创建一个 Vec<i32>
,其中包含所有第一个 i32
,并且谓词返回 true,一旦遇到不满足谓词的第一个元素,就会删除所有元素。简单的过滤器实现为
fn first_predicate<F>(vec: Vec<i32>, f: F) -> Vec<i32>
where
F: FnMut(&i32) -> bool,
{
vec.into_iter().filter(f).collect() //return all elements satisfying the predicate, not the first group
}
因为它返回满足谓词的所有元素。
有没有办法一旦遇到不满足谓词的元素就停止迭代?