Rótulos de Loop
Parte da seção Fundamentals do Journey de Rust da Coddy — lição 42 de 75.
Labels em Rust ajudam você a usar break ou continue em loops específicos quando eles estão aninhados. Adicione 'label: antes de um loop para rotulá-lo.
Por exemplo:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer;
// Isso interromperá o loop externo
}
println!("({}, {})", i, j);
}
}
Neste exemplo, temos dois loops aninhados rotulados como 'outer e 'inner. Quando o produto de i e j for maior que 5, a instrução break 'outer; é executada, o que sai do loop externo. A saída deste código será:
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)Da mesma forma, você pode usar continue 'label; para continuar para a próxima iteração do loop especificado. Por exemplo:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer;
// Isso continuará o loop externo
}
println!("({}, {})", i, j);
}
}Neste caso, quando i é igual a j, a instrução continue 'outer; é executada, o que pula o restante do loop interno e continua com a próxima iteração do loop externo. A saída será:
(2, 1)
(3, 1)
(3, 2)Desafio
InicianteEscreva um programa em Rust que use loops rotulados para encontrar o primeiro par de números (i, j) tal que a soma deles seja maior que 10 e o produto deles seja um múltiplo de 12 (o produto é dividido por 12 sem resto). O programa deve iterar i de 1 a 20 e j de 1 a 20.
Quando encontrar o par, exiba-o no formato (i, j) e interrompa o loop externo.
Folha de consulta
Rótulos (labels) em Rust ajudam você a interromper (break) ou continuar (continue) loops específicos quando eles estão aninhados. Adicione 'label: antes de um loop para rotulá-lo.
Use break 'label; para sair de um loop rotulado específico:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer; // Interrompe o loop externo (outer)
}
println!("({}, {})", i, j);
}
}Use continue 'label; para continuar para a próxima iteração de um loop rotulado específico:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer; // Continua o loop externo (outer)
}
println!("({}, {})", i, j);
}
}Experimente você mesmo
fn main() {
'outer: for i in 1..=20 {
for j in 1..=20 {
// Your logic here
break 'outer;
}
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentals
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosOperadores de ComparaçãoComparação de Strings7Entrada e Saída Básica
Exibindo no ConsoleLendo a Entrada do UsuárioRevisão - Até 120Revisão - Verdadeiro ou Falso5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 33Variáveis Parte 2
Declaração de TipoConvenções de NomenclaturaInferência de TipoRecapitulação - Inicializar VariáveisConversão de Tipo9Laços
For sobre SériesLaço WhileBreakContinueLaços AninhadosRótulos de LoopLoop InfinitoRecapitulação - Entrada Dinâmica