Aller au contenu principal
U/
Idiomes
rust

Filtrer les pairs d'un Vec<i32>

Utiliser la chaîne iter().filter().collect() pour extraire les entiers pairs d'un Vec<i32> et les stocker dans un nouveau Vec sans modifier l'original.

15 minPublié le 20 mai 2026Proposé par Anonyme

Défi

// Lisez attentivement, codez sur votre machine

É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 for ni de while : 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]
Espace solution

Proposer une solution

Connectez-vous ou créez un compte pour envoyer votre code (aucune exécution côté serveur — on stocke juste le texte pour la communauté).

// À garder en tête
  • D'abord, faire marcher

    On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)

  • Pas de mauvaise réponse

    Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.

  • Trop dur ? Au suivant

    Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.