Contrôle de flux
Débutantif, match et les blocs sont des expressions : ils renvoient une valeur.
let label = if age >= 18 { "majeur" } else { "mineur" };
// Boucles
for i in 0..5 { println!("{i}"); } // 0 à 4
for i in 0..=5 { println!("{i}"); } // 0 à 5
for element in &jours { println!("{element}"); }
let mut n = 0;
while n < 3 { n += 1; }
let resultat = loop { // boucle infinie qui renvoie une valeur
n += 1;
if n == 10 { break n * 2; }
};
// match : exhaustif, le compilateur vérifie que tous les cas sont couverts
match n {
0 => println!("zéro"),
1 | 2 => println!("un ou deux"),
3..=9 => println!("petit"),
x if x % 2 == 0 => println!("pair : {x}"),
_ => println!("autre"),
}
Cas pratique : FizzBuzz idiomatique.
for i in 1..=15 { match (i % 3, i % 5) { (0, 0) => println!("FizzBuzz"), (0, _) => println!("Fizz"), (_, 0) => println!("Buzz"), _ => println!("{i}"), } }