Défi
Énoncé
Déclarer un Vec<i32> contenant des entiers mélangés. Produire un second Vec<i32> contenant uniquement les valeurs paires en utilisant la chaîne iter().filter(|&&x| x % 2 == 0).copied().collect(). Imprimer les deux vecteurs avec println!("{:?}", ...) pour montrer que l'original est inchangé.
L'objectif est de pratiquer l'API Iterator de la bibliothèque standard Rust sans recourir à une boucle for explicite.
Contraintes
- Compilé avec
rustc --edition=2021 main.rs. - Ne pas muter le vecteur d'origine.
- Utiliser uniquement
std(pas de crate externe). - La collecte doit produire un
Vec<i32>annoté explicitement ou inféré. - Ne pas utiliser de boucle
forni dewhile: la chaîne d'itérateurs suffit.
Exemple
fn main() {
let nombres: Vec<i32> = vec![1, 4, 7, 8, 3, 10, 5, 6];
let pairs: Vec<i32> = nombres.iter().filter(|&&x| x % 2 == 0).copied().collect();
println!("Original : {:?}", nombres);
println!("Pairs : {:?}", pairs);
}
Sortie :
Original : [1, 4, 7, 8, 3, 10, 5, 6]
Pairs : [4, 8, 10, 6]