Menu
Coddy logo textTech

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)
challenge icon

Desafio

Iniciante

Escreva 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;
        }
    }
}
quiz iconTeste seus conhecimentos

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