hola-mundo-rust

Hola mundo en Rust: estructura de tu primer proyecto

  • 3 min

Un Hola Mundo es el programa mínimo que nos permite comprobar que todo funciona antes de meternos en harina.

Parece una tontería, porque solo imprime un texto por pantalla. Pero en realidad nos sirve para verificar el compilador, Cargo, la estructura del proyecto y la ejecución de un programa Rust.

Crear el proyecto

Vamos a usar cargo, porque es la forma normal de trabajar en Rust. Creamos un proyecto nuevo:

cargo new hola_rust
cd hola_rust
Copied!

Cargo nos crea una carpeta con esta pinta:

hola_rust/
├─ Cargo.toml
└─ src/
   └─ main.rs
Copied!

El archivo importante ahora mismo es src/main.rs. Ahí vive nuestro programa.

El primer main

Si abrimos src/main.rs, veremos algo parecido a esto:

fn main() {
    println!("Hola, mundo!");
}
Copied!

Y ya está. Con dos líneas tenemos nuestro primer programa en Rust.

Si venís de otros lenguajes, puede sorprender que no haya una clase Program, ni un public static void main, ni ceremonia rara alrededor. Rust puede ser muy estricto, sí, pero no le gusta escribir ruido porque sí.

Ejecutar el programa

Para compilar y ejecutar, usamos:

cargo run
Copied!

Cargo hará dos cosas:

Compilará el proyecto.

Ejecutará el binario resultante.

La salida será algo como:

Hola, mundo!
Copied!

La primera vez tardará un poco más porque Cargo crea la carpeta target, donde guarda los binarios y archivos intermedios. Las siguientes compilaciones suelen ser más rápidas.

Qué significa cada parte

Vamos a diseccionar el ejemplo, porque aquí ya aparecen varias cosas importantes.

fn main() {
    println!("Hola, mundo!");
}
Copied!
  • fn significa function. En Rust, las funciones se declaran con la palabra clave fn.
  • main es el punto de entrada del programa. Cuando ejecutamos un binario, Rust busca una función llamada main y empieza por ahí.
  • Las llaves { ... } delimitan el cuerpo de la función. Todo lo que esté dentro se ejecutará cuando se llame a main.
  • println! imprime texto por pantalla. Ese signo de exclamación no es decoración: significa que println! es una macro, no una función normal.

El punto y coma

La línea termina con ;. En Rust, el punto y coma indica que esa línea es una sentencia. De momento quedaos con eso.

println!("Hola, mundo!");
Copied!

Más adelante veremos que Rust distingue muy bien entre sentencias y expresiones, y que esa diferencia es más importante de lo que parece.

Compilar sin ejecutar

Si solo queremos comprobar que el código compila, podemos usar:

cargo check
Copied!

cargo check no genera el binario final, así que es más rápido. Lo usaréis mucho mientras escribís código.

Para compilar en modo desarrollo sin ejecutar:

cargo build
Copied!

Y para compilar optimizado:

cargo build --release
Copied!

El modo release tarda más, pero genera un binario mucho más optimizado.