# Bucles

Actualmente Rust provee tres manera de realizar actividades iterativas o bucles: loop, while y for. Cada uno de dichos enfoques tiene sus propios usos.

Loop: El ciclo infinito loop es el ciclo mas simple disponible en Rust. Rust proporciona una forma de iterar indefinidamente hasta que alguna sentencia de terminación sea alcanzada.

loop {
    println!("Itera por siempre!");
}

TIP

Se puede etiquetar el blucle loop con la siguiente sintaxis: label: loop y así poder romper con la particula brake; el bucle que deseemos.

While: normalemente while es la elección correcta de bucle si no estamos seguros de cuantas veces necesitamos iterar. Como con if, seguido de la particula while escribiremos una expresion a evaluar de manera booleana (true o false).

while !completado {
    x += x - 3;

    println!("{}", x);

    if x % 5 == 0 {
        completado = true;
    }
}

TIP

  • += (variable += expresión) es una sumas y asignaciones aritméticas
  • % (expresión % expresión) devuelve el resto aritmetico.

De necesitar un ciclo infinito, podrías sentirte tentado a escribir algo como esto:

while true {
}

Sin embargo, loop es por lejos, el mejor para este caso.

For: El blucle o ciclo for es usado para iterar un número particular de veces. Nota: en Rust los for son algo diferentes a otros lenguajes

for x in 0..10 {
    println!("{}", x); // x: i32
}

Si te percataste, en terminos abstractos la sintaxis de for seria así:

for var in expresion {
    código
}

En este caso la expresión (en el ejemplo: 0..10) es el iterador. El iterador devuelve una serie de elementos. Donde cada elemento es una iteración del bucle. Ese valor, fruto de la iteración, es a su vez asignado al el nombre de var., el cual se puede utilizar dentro del cuerpo del bucle. Una vez que el ciclo termina, el siguiente valor es obtenido del iterador, y se itera una vez más. Cuando no hay mas valores en el iterador, el ciclo for termina.

TIP

  • 0..10 es una expresión que toma una posición de inicio y una de fin, y devuelve un iterador para esos valores. ¡Cuidado! no iterará con el 10 solo hasta el 9.

Nota: En próximas lecciones de Rust sobre bucles o ciclos hablaremos de Enumerate, Iteradores, break, continue y etiquetas para los loops

Resumen

  • loop: bucle infinito.
  • while: no conocemos el numero de iteraciones.
  • for: itera un número particular de veces.