Flot de contrôle
if
La construction syntaxique if
est une expression permettant d'exécuter une
branche de code selon une certaine condition:
fn main() { let number = 6; if number % 4 == 0 { println!("number is divisible by 4"); } else if number % 3 == 0 { println!("number is divisible by 3"); } else if number % 2 == 0 { println!("number is divisible by 2"); } else { println!("number is not divisible by 4, 3, or 2"); } }
La construction if
étant une expression, elle peut-être notamment être
utilisée dans une instruction let
:
fn main() { let condition = true; let number = if condition { 5 } else { 6 }; println!("The value of number is: {number}"); }
Boucles
Plusieurs constructions de boucles peuvent être utilisées en Rust.
loop
L'expression loop
permet de créer des boucles infinie:
fn main() { loop { println!("again!"); } }
Une boucle peut être interrompue avec le mot-clef break
qui permet de renvoyer
une valeur éventuelle:
fn main() { let mut counter = 0; let result = loop { counter += 1; if counter == 10 { break counter * 2; } }; println!("The result is {result}"); }
Une boucle peut-être identifiée par un label avec la syntaxe 'label
pour
déterminer sur quelle boucle le break
doit agir (ce dernier peut
éventuellement également retourner une
valeur):
fn main() { let mut count = 0; 'counting_up: loop { println!("count = {count}"); let mut remaining = 10; loop { println!("remaining = {remaining}"); if remaining == 9 { break; } if count == 2 { break 'counting_up; } remaining -= 1; } count += 1; } println!("End count = {count}"); }
while
La construction while
permet d'exécuter du code tant qu'une condition est
vraie:
fn main() { let mut number = 3; while number != 0 { println!("{number}!"); number -= 1; } println!("LIFTOFF!!!"); }
for
fn main() { let a = [10, 20, 30, 40, 50]; for element in a { println!("the value is: {element}"); } }
fn main() { for number in (1..4).rev() { println!("{number}!"); } println!("LIFTOFF!!!"); }