</>
Plan du cours — 23/66

Itérateurs

Intermédiaire

Les itérateurs sont paresseux : rien ne s'exécute avant un consommateur (collect, sum, for...). Ils sont compilés en code aussi rapide qu'une boucle manuelle.

let nombres = vec![1, 2, 3, 4, 5, 6];

let carres_pairs: Vec<i32> = nombres
    .iter()
    .filter(|&&n| n % 2 == 0)
    .map(|n| n * n)
    .collect();                       // [4, 16, 36]

let somme: i32 = nombres.iter().sum();
let max = nombres.iter().max();       // Option<&i32>
let trouve = nombres.iter().find(|&&n| n > 3);
let existe = nombres.iter().any(|&n| n == 3);
let tous = nombres.iter().all(|&n| n > 0);

for (i, n) in nombres.iter().enumerate() { println!("{i}: {n}"); }
let paires: Vec<_> = nombres.iter().zip(["a", "b"]).collect();

// Trois façons d'itérer
for x in &v {}       // .iter()      -> &T
for x in &mut v {}   // .iter_mut()  -> &mut T
for x in v {}        // .into_iter() -> T (consomme v)