Étiquettes de boucle
Fait partie de la section Fundamentals du Journey Rust de Coddy — leçon 42 sur 75.
Les étiquettes (labels) en Rust vous aident à interrompre ou à continuer des boucles spécifiques lorsqu'elles sont imbriquées. Ajoutez 'label: avant une boucle pour l'étiqueter.
Par exemple :
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer;
// Cela interrompra la boucle externe
}
println!("({}, {})", i, j);
}
}
Dans cet exemple, nous avons deux boucles imbriquées étiquetées 'outer et 'inner. Lorsque le produit de i et j est supérieur à 5, l'instruction break 'outer; est exécutée, ce qui interrompt la boucle externe. La sortie de ce code sera :
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)De même, vous pouvez utiliser continue 'label; pour passer à l'itération suivante de la boucle spécifiée. Par exemple :
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer;
// Cela continuera la boucle externe
}
println!("({}, {})", i, j);
}
}Dans ce cas, lorsque i est égal à j, l'instruction continue 'outer; est exécutée, ce qui ignore le reste de la boucle interne et continue avec l'itération suivante de la boucle externe. La sortie sera :
(2, 1)
(3, 1)
(3, 2)Défi
DébutantÉcrivez un programme Rust qui utilise des boucles étiquetées pour trouver la première paire de nombres (i, j) telle que leur somme soit supérieure à 10 et leur produit soit un multiple de 12 (le produit est divisible par 12 sans reste). Le programme doit itérer à travers i de 1 à 20 et j de 1 à 20.
Lorsque vous trouvez la paire, affichez-la au format (i, j) et sortez de la boucle externe (outer loop).
Aide-mémoire
Les étiquettes (labels) en Rust vous aident à interrompre (break) ou à continuer (continue) des boucles spécifiques lorsqu'elles sont imbriquées. Ajoutez 'label: avant une boucle pour l'étiqueter.
Utilisez break 'label; pour quitter une boucle étiquetée spécifique :
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer; // Interrompt la boucle extérieure
}
println!("({}, {})", i, j);
}
}Utilisez continue 'label; pour passer à l'itération suivante d'une boucle étiquetée spécifique :
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer; // Continue la boucle extérieure
}
println!("({}, {})", i, j);
}
}Essayez vous-même
fn main() {
'outer: for i in 1..=20 {
for j in 1..=20 {
// Your logic here
break 'outer;
}
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fundamentals
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Entrées/Sorties de base
Afficher dans la consoleLire la saisie utilisateurRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 33Variables - Partie 2
Déclaration de typeConventions de nommageInférence de typeRécapitulatif - Initialiser des variablesConversion de type9Boucles
Boucle For sur une sérieBoucle WhileBreakContinueBoucles imbriquéesÉtiquettes de boucleBoucle infinieRécapitulatif - Entrée dynamique12Bases des tableaux
Déclaration de tableauxTableau comme paramètreAccès aux élémentsModification de tableauxRécapitulatif - Affichage formaté d'un tableau15Opérations sur les chaînes
Méthodes de chaînesMacro format!Conversion de chaînesRécapitulatif - Format