retain()
RS-P1009The collections in Rust (Vec
, VecDeque
, HashMap
, HashSet
, etc.)
provide the retain(..)
method to filter elements matching a given predicate
and discard the rest. The drain(..)
method can be used to do the reverse as well.
Consider using this instead of iter().filter().collect()
.
fn foo() {
let v: Vec<i32> = vec![1, 2, 3, 4];
let even_v: Vec<i32> = v.iter().filter(|x| x % 2 == 0).collect();
let dq = VecDeque::from([1, 2, 3, 4]);
let even_dq: VecDeque<i32> = dq.iter().filter(|x| x % 2 == 0).collect();
}
fn foo() {
let v: Vec<i32> = vec![1, 2, 3, 4];
let even_v: Vec<i32> = v.retain(|x| x % 2 == 0);
let dq = VecDeque::from([1, 2, 3, 4]);
let even_dq: VecDeque<i32> = dq.retain(|x| x % 2 == 0);
}