Iterator::fold()
Сворачивает итератор в одно значение с аккумулятором.
Сигнатура
fn fold<B, F: FnMut(B, Self::Item) -> B>(self, init: B, f: F) -> BПроходит по всем элементам, накапливая результат в аккумуляторе, начиная с init. Универсальная свёртка.
let v = vec![1, 2, 3, 4];
let sum = v.iter().fold(0, |acc, x| acc + x);
println!("{}", sum); // 10