break |
Arrêt |
|---|---|
| Rust | |
Syntaxe
|
loop { if condition { break; } } |
|
let valeur = loop { if condition { break valeur; // renvoie la valeur spécifié } }; |
|
'label_externe: loop { loop { break 'label_externe; } } |
Paramètres
| Nom | Description |
|---|---|
| break valeur | Ce paramètre permet de quitter la boucle en renvoyant une valeur spécifique à l'expression de boucle, utilisable quand la boucle est affectée à une variable. |
| 'label_externe | Ce paramètre permet de spécifier un label de boucle externe pour sortir d'une boucle imbriquée particulière, en ciblant précisément la boucle à interrompre. |
Description
Ce mot réservé permet de quitter une boucle immédiatement.
Remarques
Quittez prématurément une boucle ou un bloc étiqueté.
Lorsqu'une interruption survient, l'exécution du corps de la boucle associée est immédiatement interrompue.
Une expression de rupture est normalement associée à la boucle la plus interne entourant la rupture, mais une étiquette peut être utilisée pour spécifier quelle boucle englobante est affectée.
- 'outer: for i in 1..=5 {
- println!("itération externe (i): {i}");
-
- '_inner: for j in 1..=200 {
- println!(" itération interne (j): {j}");
- if j >= 3 {
- // rompt la boucle intérieure et laisse la boucle extérieure continuer.
- break;
- }
- if i >= 2 {
- // s'arrête à partir de la boucle externe et passe directement à «Au revoir».
- break 'outer;
- }
- }
- }
- println!("Au revoir.");
Lorsqu'elle est associée à une boucle, une expression break peut être utilisée pour renvoyer une valeur de cette boucle. Ceci n'est valable qu'avec une boucle et non avec d'autres types de boucles. Si aucune valeur n'est spécifiée pour break, elle renvoie (). Chaque break dans une boucle doit renvoyer le même type.
Il est également possible de quitter tout bloc étiqueté renvoyant la valeur plus tôt que prévu. Si aucune valeur n'est spécifiée pour break, la fonction renvoie ().
- let inputs = vec!["Vache", "Chat", "Chien", "Serpent", "Morue"];
-
- let mut results = vec![];
- for input in inputs {
- let result = 'filter: {
- if input.len() > 4 {
- break 'filter Err("Trop long");
- };
-
- if !input.contains("C") {
- break 'filter Err("Pas de C");
- };
-
- Ok(input.to_uppercase())
- };
-
- results.push(result);
- }
-
- // [Ok("Trop long"), Ok("CHAT"), Err("Pas de C"), Err("Trop long"), Ok("Trop long")]
- println!("{:?}", results)