Encaixamentos e Rótulos

É possível rebentar (break) ou ignorar (continue) laços de repetição externos quando lidamos com laços de repetição encaixados. Nestes casos, os laços devem ser anotados com o mesmo rótulo ('label), e o rótulo deve ser passado à declaração break ou continue.

#![allow(unreachable_code, unused_labels)]

fn main() {
    'outer: loop {
        println!("Entered the outer loop");

        'inner: loop {
            println!("Entered the inner loop");

            // Isto apenas rebentaria o laço de repetição interno
            //break;

            // Isto rebenta o laço de repetição externo
            break 'outer;
        }

        println!("This point will never be reached");
    }

    println!("Exited the outer loop");
}