Iterator methods — map, filter, fold, etc.
Basic:
1let numbers = vec![1, 2, 3, 4, 5];23// Map4let doubled: Vec<i32> = numbers.iter().map(|x| x * 2).collect();56// Filter7let evens: Vec<&i32> = numbers.iter().filter(|x| *x % 2 == 0).collect();89// Fold10let sum: i32 = numbers.iter().fold(0, |acc, x| acc + x);
Chaining:
1let result: Vec<i32> = (1..=10)2 .filter(|x| x % 2 == 0)3 .map(|x| x * x)4 .collect();
Custom combinator:
1trait IteratorExt: Iterator {2 fn unique(self) -> Unique<Self>3 where4 Self: Sized,5 Self::Item: Eq + Hash,6 {7 Unique { iter: self, seen: HashSet::new() }8 }9}
Key: Use iterator methods for functional style.