De zip à SAXPY

La méthode zip() permet de passer d’une paire d’itérateurs à un itérateur de paires.

En combinaison avec map() et collect(), elle permet d’implémenter SAXPY :

#![allow(unused)]
fn main() {
let a = 4.2;
let x = [1.2; 3];
let y = [3.4; 3];
println!("Computing {a} * {x:?} + {y:?}");

let z = x.into_iter().zip(y)
         .map(|(x, y)| a * x + y)
         .collect::<Vec<_>>();
println!("Result: {z:?}");
}

Attention aux itérateurs de longueur inhomogène: zip() tronque au plus court !1

1

Meilleur choix par défaut que C++ où c’est du comportement indéfini, mais reste piégeux.