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.