Filter vector of structs without copy
examples/vectors/filter-vector-of-structs/src/main.rs
#[derive(Debug)] #[allow(dead_code)] struct Something { number: i32, text: String, numbers: Vec<i32>, } fn main() { let va: Vec<Something> = vec![ Something {number: 1, text: "small".to_string(), numbers: vec![1, 2, 3]}, Something {number: 11, text: "medium".to_string(), numbers: vec![11, 12]}, Something {number: 101, text: "large".to_string(), numbers: vec![101]}, ]; dbg!(&va); //let vb = &va.iter().collect::<Vec<&Something>>(); let vb = &va.iter().collect::<Vec<_>>(); let v_big = &vb.iter().filter(|thing| thing.number > 20).collect::<Vec<_>>(); //let v_big = &vb.into_iter().filter(|thing| thing.number > 20).collect::<Vec<_>>(); dbg!(&v_big); dbg!(&vb); }