Iterator::filter()
Оставляет только элементы, проходящие условие.
Сигнатура
fn filter<P: FnMut(&Self::Item) -> bool>(self, p: P) -> Filter<Self, P>Лениво пропускает дальше только те элементы, для которых предикат вернул true.
let v = vec![1, 2, 3, 4];
let even: Vec<i32> = v.into_iter().filter(|x| x % 2 == 0).collect();
println!("{:?}", even); // [2, 4]