capypad
0 day streak
rust / beginner
Snippet

Loop Labels and Early Exit

Rust allows you to label loops with a lifetime specifier like 'outer. This lets you break out of nested loops from the outer loop. The break without a label exits only the innermost loop, while break 'outer exits the labeled outer loop.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
let mut count = 0;
 
'outer: loop {
let mut inner = 0;
loop {
if inner == 2 {
break;
}
inner += 1;
}
count += 1;
if count == 3 {
break 'outer;
}
}
 
println!("Count: {}", count);
Breakdown
1
'outer: loop {
Defines a labeled loop named 'outer'
2
let mut inner = 0; loop {
Starts an inner unlabeled infinite loop
3
if inner == 2 { break; }
Breaks inner loop when inner reaches 2
4
if count == 3 { break 'outer; }
Breaks out of the labeled outer loop
5
println!("Count: {}", count);
Final count is 3 after breaking outer loop