fn main()
{
let mut a = vec![0;10];
for j in 0..10 { a[j] = j + 10; }
let mut i : usize = 0;
while i < 10 {
println! ("{} -> {} ", i, a[i]);
+= 1;
i }
println!("--------------------------------------");
loop {
-= 1;
i print! ("{} -> {}", i, a[i]);
if i > 4 { println!(); continue;}
println!("**");
if i <= 0 { break;}
}
println!("--------------------------------------");
for i in a {print! ("{} ", i);} println! ();
}
Rust, como la mayoría de lenguajes nos ofrece bucles for
y while
. Los bucles for
sigue el formato de la
construcción foreach
que encontramos en otros lenguajes, en
lugar de la versión comprimida de while
de lenguajes como C
o Java.
SOY NOVATO
Al igual que otros muchos lenguajes Rust ofrece un operador de rango con el que generar secuencias de números consecutivos utilizando la sintáxis
0..10
o(std::ops::Range{start:0, end:10})
. Observa el uso de las llaves (Range
es una structura) y los paréntesis si queréis usar esta expresión tan larga en vuestros buclesfor
.
Las instrucciones break
y continue
también
están presentes con la función habitual. Ambas instrucciones pueden
recibir como parámetro una etiqueta para indicar el ciclo del bucle que
queremos repetir (continue
) o que bucle queremos terminar
(break
). El fragmento de código siguiente muestra un
ejemplo utilizando continue
sacado de la documentación
original en linea:
'exterior: for x in 0..10 {
'interior: for y in 0..10 {
if x % 2 == 0 { continue 'exterior; } // Continua el bucle sobre `x`.
if y % 2 == 0 { continue 'interior; } // Continua el bucle sobre `y`.
println!("x: {}, y: {}", x, y);
}
}
Rust, ofrece una instrucción para definir bucles infinitos llamada
loop
.
SABÍAS QUE?
Rust incorporó la palabra clave
loop
desde el principio, sin embargo la posibilidad de retornar un valor conbreak
fue añadida al lenguaje con posterioridad
Un bucle infinito se repetirá indefinidamente o hasta que el bucle se
pare internamente con una instrucción break
. Cuando el
bucle infinito se termina con break
, Rust nos permite
retornar un cierto valor.
let mut a = 1
let result = loop {
if a > 5 {break a;}
+=1;
a};
println!("Resultado: {}", result);
Esta es realmente la única forma de implementar un bucle infinito en
Rust. Es posible utilizar while true
pero el compilador
emitirá un warning.
Resumen
- Rust ofrece bucles
for
,while
. Los buclesfor
pueden utilizarse con elementos iterables - Rust ofrece las palabras clave
continue
ybreak
para controlar el flujo de ejecución de los bucles. Ambas palabras clave aceptan una etiqueta como parámetro. - Rust ofrece una palabra clave especial para implementar bucles
infinitos
loop
.
■