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.