AnyCompiler

Control de Flujo

if en Rust es una expresión, no solo una sentencia — puede producir un valor, por eso puedes asignar el resultado de un if/else directamente a una variable en vez de declarar la variable primero y asignar dentro de cada rama.

fn main() {
    let number = 7;

    let description = if number % 2 == 0 {
        "even"
    } else {
        "odd"
    };

    println!("{} is {}", number, description);
}
Output
7 is odd

loop, while, y for

loop se ejecuta para siempre hasta que lo interrumpes explícitamente con break — y break puede sacar un valor del bucle, convirtiéndose en el resultado de la expresión loop, algo que while y for no pueden hacer ya que no están pensados para calcular un valor. for itera directamente sobre un rango o colección, sin necesidad de llevar la cuenta manual de un índice.

fn main() {
    let mut count = 0;
    let result = loop {
        count += 1;
        if count == 5 {
            break count * 2;
        }
    };
    println!("result = {}", result);

    for i in 0..3 {
        println!("i = {}", i);
    }
}
Output
result = 10
i = 0
i = 1
i = 2

Siguiente: vectors — el tipo de array creciente (growable) de Rust.

Practice Exercise

Define una variable score: i32 = 73. Usa una expresión if/else para fijar una variable grade en "pass" si score es 60 o más, o "fail" en caso contrario, luego imprime grade.