Conditions
if
/else
Les principales différences entre les if/else de C++ et Rust sont qu’en Rust…
- Il n’y a pas de parenthèses obligatoires autour de la condition de “if”
- if/else est une expression, et remplace donc l’opérateur ternaire de C++
#![allow(unused)] fn main() { let condition = true; let choix = if condition { 42 } else { 24 }; }
if let <motif> = <expression>
, que nous avons introduit dans le chapitre précédent, propose une alternative plus légère àmatch
pour les cas simples#![allow(unused)] fn main() { enum PeutEtre { Oui(u32), Non } // ... plus tard ... let x = PeutEtre::Oui(42); if let PeutEtre::Oui(x) = x { println!("La réponse est {x}"); } else { println!("Pas de réponse..."); } }
Jusqu’ici, rien de bien nouveau.
Pattern matching
Pour sélectionner différents bouts de code en fonction de la valeur d’une
expression, Rust fournit match
, que nous avons présenté dans le chapitre sur
les types sommes. Ce mécanisme remplace avantageusement le switch
de C++,
qui n’existe donc pas en Rust.