break
and continue
If you want to exit any kind of loop early, use
break
.
For loop
, this can take an optional expression that becomes the value of the
loop
expression.
If you want to immediately start the next iteration use
continue
.
fn main() { let (mut a, mut b) = (100, 52); let result = loop { if a == b { break a; } if a < b { b -= a; } else { a -= b; } }; println!("{result}"); }
Both continue
and break
can optionally take a label argument which is used
to break out of nested loops:
fn main() { 'outer: for x in 1..5 { println!("x: {x}"); let mut i = 0; while i < x { println!("x: {x}, i: {i}"); i += 1; if i == 3 { break 'outer; } } } }
In this case we break the outer loop after 3 iterations of the inner loop.
This slide should take about 5 minutes.
- Note that
loop
is the only looping construct which returns a non-trivial value. This is because it’s guaranteed to be entered at least once (unlikewhile
andfor
loops).