for |
Pour |
|---|---|
| Rust | |
Syntaxe
|
for variable in expression_iterable { // corps de la boucle } |
Paramètres
| Nom | Description |
|---|---|
| variable | Ce paramètre permet de recevoir, à chaque itération, un élément extrait de l'itérateur spécifié. |
| expression_iterable | Ce paramètre permet de désigner un objet implémentant le trait IntoIterator, sur lequel la boucle itère. |
| corps de la boucle | Ce paramètre permet de regrouper les instructions qui seront exécutées à chaque passage dans la boucle. |
Description
Ce mot réservé permet d'indiquer une boucle sur les éléments d'un itérateur, mettant en oeuvre un trait ou spécifie une durée de vie de rang supérieur.
Remarques
Itération avec in, implémentation de trait avec impl ou limites de trait de rang supérieur (for<'a>).
Le mot clef for est utilisé dans de nombreux contextes syntaxiques :
- for est utilisé dans les boucles for-in.
- for est utilisé lors de l'implémentation de traits, comme dans impl Trait for Type (voir impl pour plus d'informations).
- for est également utilisé pour les limites de trait de rang supérieur, comme dans for<'a> &'a T: PartialEq<i32>.
Les boucles for-in, ou plus précisément les boucles d'itérateur, sont une simple variante syntaxique d'une pratique courante en Rust, consistant à boucler sur tout ce qui implémente IntoIterator jusqu'à ce que l'itérateur renvoyé par .into_iter() renvoie None (ou que le corps de la boucle utilise break).
Comme illustré dans l'exemple ci-dessus, les boucles for (comme toutes les autres boucles) peuvent être étiquetées, en utilisant une syntaxe similaire à celle des boucles de durée de vie (similaire visuellement, mais totalement distincte en pratique). Donner la même étiquette à break interrompt la boucle étiquetée, ce qui est utile pour les boucles internes. Il ne s'agit certainement pas d'un goto.
Une boucle for se développe comme suit :