break
y 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.
Si quieres iniciar inmediatamente la siguiente iteración, usa 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}"); }
De forma opcional, tanto continue
como break
pueden utilizar un argumento de etiqueta para interrumpir los bucles anidados:
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; } } } }
En este caso, detenemos el bucle exterior tras tres iteraciones del bucle interno.
This slide should take about 5 minutes.
- Ten en cuenta que
loop
es la única construcción de bucle que devuelve un valor no trivial. Esto se debe a que es inevitable que se introduzca al menos una vez (a diferencia de los bucleswhile
yfor
).