Pequeño ejemplo

A continuación, se muestra un pequeño programa de ejemplo de Rust:

fn main() {              // Punto de entrada del programa
    let mut x: i32 = 6;  // Variable mutable vinculante
    print!("{x}");       // Macro para printing, como printf
    while x != 1 {       // Sin paréntesis alrededor de las expresiones
        if x % 2 == 0 {  // Operaciones matemáticas como en otros lenguajes
            x = x / 2;
        } else {
            x = 3 * x + 1;
        }
        print!(" -> {x}");
    }
    println!();
}

El código implementa la conjetura de Collatz: se cree que el bucle terminará siempre, pero aún no se ha demostrado. Edita el código y prueba con diferentes entradas.

Puntos clave:

  • Explica que todas las variables están tipadas estáticamente. Prueba a quitar i32 para activar la inferencia de tipos. Prueba con i8 y provoca un desbordamiento de enteros en runtime.

  • Cambia let mut x por let x y discute el error del compilador.

  • Muestra cómo print! da un error de compilación si los argumentos no coinciden con la cadena de formato.

  • Muestra cómo se debe usar {} como marcador de posición para poder imprimir una expresión más compleja que una sola variable.

  • Muestra a los alumnos la biblioteca estándar y cómo buscar std::fmt, que tiene las reglas del mini-lenguaje de formato. Es importante que los alumnos se familiaricen con la búsqueda en la biblioteca estándar.

    • En un shell, rustup doc std::fmt abrirá un navegador en la documentación local de std::fmt.