Iterator::zip()
Сшивает два итератора в пары.
Сигнатура
fn zip<U: IntoIterator>(self, other: U) -> Zip<Self, U::IntoIter>Объединяет два итератора в один, выдающий пары элементов. Останавливается, как только заканчивается более короткий.
let names = vec!["Аня", "Боб"];
let ages = vec![20, 25];
let pairs: Vec<_> = names.iter().zip(ages.iter()).collect();
println!("{:?}", pairs); // [("Аня", 20), ("Боб", 25)]