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_rustCargo nos crea una carpeta con esta pinta:
hola_rust/
├─ Cargo.toml
└─ src/
└─ main.rsEl 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!");
}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 runCargo hará dos cosas:
Compilará el proyecto.
Ejecutará el binario resultante.
La salida será algo como:
Hola, mundo!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!");
}fnsignifica function. En Rust, las funciones se declaran con la palabra clavefn.maines el punto de entrada del programa. Cuando ejecutamos un binario, Rust busca una función llamadamainy empieza por ahí.- Las llaves
{ ... }delimitan el cuerpo de la función. Todo lo que esté dentro se ejecutará cuando se llame amain. println!imprime texto por pantalla. Ese signo de exclamación no es decoración: significa queprintln!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!");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 checkcargo 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 buildY para compilar optimizado:
cargo build --releaseEl modo release tarda más, pero genera un binario mucho más optimizado.