DÉFIS
Chaque défi est inutile. Aucun n'est une perte de temps : on code pour le plaisir et on apprend pour de vrai.
5 défis
- FacileIdiomes
Gérer un Option<i32> avec match
Écrire la fonction premier_pair(v: &[i32]) -> Option<i32> qui retourne le premier entier pair d'une slice, ou None si aucun n'existe, et la démontrer avec match.
rustDébutant#rust#option15 minmai 2026 - DifficileTraits
impl Iterator pour un itérateur de Fibonacci
Définir la struct Fib et implémenter le trait Iterator<Item = u64> pour qu'elle produise la suite de Fibonacci terme par terme, utilisable avec .take(10).collect().
rustAvancé#rust#iterateurs45 minmai 2026 - MoyenTraits
impl Display pour une struct Point
Définir la struct Point { x: i32, y: i32 } et implémenter std::fmt::Display pour qu'elle s'affiche sous la forme (x, y) avec println!.
rustIntermédiaire#rust#traits25 minmai 2026 - FacileIdiomes
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.
rustDébutant#rust#iterateurs15 minmai 2026 - MoyenIdiomes
Chaîner des Result avec l'opérateur ?
Lire une ligne sur stdin, la parser en i32 et calculer son carré en chaînant les opérations avec l'opérateur ? pour propager les erreurs jusqu'au main.
rustIntermédiaire#rust#result30 minmai 2026
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.