Aprende Rust

Lección 01 de 26 Primeros pasos

Hola, Rust: tu primer programa

  • 4 min de lectura
  • 3 ejercicios
  1. Este es tu primer programa. Todo empieza en la función main y println! escribe un texto en pantalla.
  2. Rust es compilado: cargo build traduce tu código a un binario que el ordenador ejecuta directamente.
  3. cargo run compila y ejecuta de una vez. Mira la terminal: ¡tu programa ya saluda!
  4. Con llaves {} metes valores dentro del texto: {nombre} se sustituye por el valor de nombre.
1/4

Rust es un lenguaje de programación que promete algo que durante décadas parecía imposible: la velocidad de C y C++ junto con la seguridad de un lenguaje moderno. Sin recolector de basura, sin errores de memoria y con un compilador que te ayuda en lugar de pelearse contigo.

Lo usan Firefox, el kernel de Linux, Windows, Android, Discord, Cloudflare o AWS, y lleva años siendo el lenguaje más admirado por los desarrolladores en la encuesta de Stack Overflow. En este curso lo vas a aprender desde cero, paso a paso, escribiendo y ejecutando código en cada lección.

¿Por qué Rust?

  • Rendimiento: compila a código máquina nativo, sin máquina virtual ni recolector de basura. Es tan rápido como C o C++.
  • Fiabilidad: el compilador detecta en tiempo de compilación errores que en otros lenguajes descubrirías en producción: accesos a memoria liberada, condiciones de carrera entre hilos o valores nulos inesperados.
  • Productividad: viene con un gestor de paquetes (Cargo), un formateador, un linter y mensajes de error que explican qué ha fallado y cómo arreglarlo.

Ferris: La mascota no oficial de Rust es un cangrejo llamado Ferris 🦀. Por eso a quienes programan en Rust se les llama rustaceans.

Instalar Rust

Para este curso no necesitas instalar nada: cada lección tiene un editor que compila y ejecuta tu código. Aun así, cuando quieras programar en tu ordenador, la forma recomendada es rustup, el instalador oficial:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

En Windows, descarga el instalador rustup-init.exe desde rustup.rs. Después comprueba que todo funciona:

rustc --version
cargo --version

rustc es el compilador y cargo es la herramienta con la que crearás, compilarás y ejecutarás tus proyectos.

Tu primer programa

Este es el clásico «Hola, mundo» en Rust. Pulsa Ejecutar para compilarlo y ver el resultado:

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

Aunque es muy corto, ya tiene varias piezas importantes:

  • fn declara una función. main es especial: es la función por la que empieza a ejecutarse todo programa de Rust.
  • Las llaves { } delimitan el cuerpo de la función.
  • println! imprime un texto y añade un salto de línea. El signo ! indica que no es una función normal, sino una macro: código que genera más código al compilar.
  • El texto va entre comillas dobles y la instrucción termina con punto y coma ;.

Estilo: En Rust se indenta con 4 espacios. No es obligatorio, pero es la convención y la herramienta rustfmt la aplica automáticamente.

Compilar y ejecutar

Rust es un lenguaje compilado: antes de ejecutar tu programa, el compilador lo traduce a un fichero binario que el sistema operativo puede ejecutar directamente, incluso en un ordenador que no tenga Rust instalado.

Podrías compilar un fichero suelto con rustc main.rs, pero en la práctica siempre usarás Cargo:

cargo new hola
cd hola
cargo run

cargo new crea esta estructura:

hola/
├── Cargo.toml
└── src/
    └── main.rs

Cargo.toml describe el proyecto (nombre, versión y dependencias) y src/main.rs ya trae un «Hola, mundo» listo. Estos son los comandos que más usarás:

ComandoQué hace
cargo runCompila y ejecuta el programa
cargo buildCompila sin ejecutar (en target/debug)
cargo build --releaseCompila con optimizaciones para producción
cargo checkComprueba que el código compila, sin generar el binario (muy rápido)

Imprimir valores con println!

println! no solo imprime texto fijo. Con las llaves {} puedes intercalar valores:

fn main() {
    let nombre = "Ferris";
    let patas = 8;

    println!("Me llamo {nombre} y tengo {patas} patas");
    println!("{} + {} = {}", 2, 3, 2 + 3);
}
  • {nombre} mete directamente el valor de la variable nombre.
  • Las llaves vacías {} se rellenan, en orden, con los argumentos que pongas después del texto.

No te preocupes todavía por let: en la siguiente lección verás las variables a fondo. Por ahora quédate con que guarda un valor con un nombre.

También existen print!, que imprime sin salto de línea, y eprintln!, que escribe en la salida de errores en lugar de la salida estándar.

Comentarios

El compilador ignora los comentarios. Úsalos para explicar el porqué de tu código:

fn main() {
    // Comentario de una línea
    println!("Hola"); // También al final de una línea

    /* Comentario
       de varias líneas */
}

Más adelante verás los comentarios de documentación (///), con los que Cargo genera la documentación de tu proyecto.

Consejo: Lee siempre los errores del compilador hasta el final. Los mensajes de Rust indican la línea exacta, explican el problema y muchas veces proponen el arreglo con un help:. En los ejercicios de este curso los verás a menudo: son tu mejor profesor.

Hora de practicar

Ejercicios

0/3 resueltos

Reto 1 de 3

Escribe tu primer programa: haz que imprima exactamente ¡Hola, mundo!.
Salida esperada
¡Hola, mundo!
src/main.rs
$ cargo run Listo

Pulsa Ejecutar para compilar y ver aquí la salida de tu programa.

¿Algo no cuadra en este reto? Avísanos