Ir al contenido

Introducción a Rust

Rust es un lenguaje de programación de sistemas. Es decir, sirve para lo mismo que C o C++: sistemas operativos, motores de videojuegos, navegadores, bases de datos y herramientas de línea de comandos donde importan la velocidad y el control.

Lo que lo hace especial es que te da ese rendimiento de bajo nivel sin las trampas de siempre. En C es fácil leer por accidente memoria ya liberada o provocar una condición de carrera (data race). En Rust, un código así normalmente ni siquiera compila: el compilador te detiene antes de generar el programa.

Rust empezó como un proyecto personal de Graydon Hoare, que más tarde lo llevó a Mozilla para que lo patrocinara. Su versión estable 1.0 salió en 2015. Hoy lo mantienen la Rust Foundation y una gran comunidad de código abierto.

Durante años había que elegir entre dos opciones, cada una con su precio:

  • Lenguajes de bajo nivel (C, C++): rápidos y cerca del hardware, pero tú gestionas la memoria a mano. Los errores provocan fallos y agujeros de seguridad.
  • Lenguajes de alto nivel (Python, Java, Go): seguros y fáciles, pero dependen de un recolector de basura (garbage collector), y eso cuesta rendimiento y previsibilidad.

La gran idea de Rust es una tercera opción: garantiza la seguridad de la memoria en tiempo de compilación con un sistema llamado ownership (propiedad), que verás más adelante en este curso. Sin recolector de basura y sin free() manual: el compilador averigua cuándo ya no se necesita la memoria.

Un mapa aproximado de dónde se ubica Rust frente a lenguajes que quizá conozcas:

Lenguaje Velocidad Seguridad de memoria Recolector de basura
C / C++ Rápido Manual, propensa a errores No
Go Buena Segura Sí
Python Más lento Segura Sí
Rust Rápido Segura (comprobada al compilar) No

La idea principal: Rust busca la velocidad de C y la seguridad de un lenguaje de alto nivel, las dos a la vez. Si quieres verlo más de cerca, lado a lado y con código real, mira Rust frente a otros lenguajes.

Seguramente ya estás usando Rust sin saberlo:

  • Firefox: partes de su motor de renderizado están escritas en Rust
  • Cloudflare y Discord: servicios de backend donde el rendimiento es crítico
  • El kernel de Linux: ahora acepta drivers escritos en Rust
  • Herramientas de terminal: favoritas por su rapidez, como ripgrep, bat y fd
  • WebAssembly: Rust es una de las mejores opciones para ejecutar código a velocidad nativa en el navegador

Todavía no necesitas entender cada detalle. Solo fíjate en lo fácil que es de leer:

fn main() {
let name = "Rustacean";
println!("¡Hola, {name}!");
}

Salida:

¡Hola, Rustacean!
▶ Pruébalo tú mismo

Cómo se ve la “seguridad” en la práctica

Sección titulada «Cómo se ve la “seguridad” en la práctica»

“Seguridad de memoria” suena abstracto, así que veamos un caso concreto. Imagina que tienes una lista con tres puntuaciones y pides la décima, que no existe.

En C, eso está permitido. El programa lee en silencio lo que haya en la memoria justo después de tu lista. Puedes obtener un número cualquiera, un fallo o un agujero de seguridad, y nada te avisa.

Rust no deja pasar eso. Si el compilador puede ver el error, se niega a compilar el programa:

fn main() {
let scores = [90, 85, 77];
println!("{}", scores[9]);
}
error: this operation will panic at runtime
--> src/main.rs:3:20
|
3 | println!("{}", scores[9]);
| ^^^^^^^^^ index out of bounds: the length is 3 but the index is 9

El mensaje del compilador está en inglés (así lo escribe rustc) y dice: “esta operación provocará un panic al ejecutarse: índice fuera de rango, la longitud es 3 pero el índice es 9”.

Y cuando no sabes si un elemento existe, Rust te da una forma educada de preguntar. .get() responde “aquí está” o “ahí no hay nada” (None), en lugar de darte basura:

fn main() {
let scores = [90, 85, 77];
println!("primera puntuación: {}", scores[0]);
println!("décima puntuación: {:?}", scores.get(9));
}

Salida:

primera puntuación: 90
décima puntuación: None
▶ Pruébalo tú mismo

No te preocupes todavía por [...], .get() o None. Los verás con calma en Arrays y Option. Lo importante por ahora: toda una clase de errores del tipo “leer memoria que no deberías” se detecta antes de que tu programa se ejecute, o se maneja de forma segura mientras se ejecuta.

Respuesta sincera: la primera o las dos primeras semanas pueden ser frustrantes. Conceptos como el ownership y el borrowing (préstamo) son realmente nuevos, y el compilador va a rechazar código que crees que debería funcionar. Pero esa fricción es el compilador enseñándote a escribir código más seguro, y todo encaja más rápido de lo que la mayoría espera.

Este curso está pensado para suavizar esa curva: pasos pequeños, ejemplos reales y un botón Pruébalo tú mismo en todo.

Cambia el programa de “Una pequeña muestra” para que te salude a ti por tu nombre, y añade una segunda línea que diga ¡Te damos la bienvenida a Rust!. Pista: cada println! imprime una línea, así que necesitas dos.

Ver solución
fn main() {
let name = "Sam";
println!("¡Hola, {name}!");
println!("¡Te damos la bienvenida a Rust!");
}

Salida:

¡Hola, Sam!
¡Te damos la bienvenida a Rust!
▶ Pruébalo tú mismo

Guarda la palabra Rust y el año 2015 en dos nombres, y luego imprime la frase Rust 1.0 se lanzó en 2015. usando los dos. Pista: puedes poner más de un {name} dentro del mismo println!.

Ver solución
fn main() {
let language = "Rust";
let year = 2015;
println!("{language} 1.0 se lanzó en {year}.");
}

Salida:

Rust 1.0 se lanzó en 2015.
▶ Pruébalo tú mismo
  • Rust es un lenguaje de sistemas rápido y seguro: velocidad de C, sin recolector de basura.
  • Evita los errores de memoria en tiempo de compilación gracias al ownership.
  • Se usa en navegadores, kernels, servicios en la nube, herramientas de terminal y WebAssembly.
  • La curva de aprendizaje existe, pero es corta. El compilador está de tu lado.

A continuación: instalar Rust y ejecutar tu primer programa en tu computadora.

Comprueba lo aprendido

1. ¿Cómo consigue Rust la seguridad de memoria sin un recolector de basura?

2. Según la tabla comparativa, ¿qué tienen en común Rust y Go?

3. ¿Cómo se llaman a sí mismos los desarrolladores de Rust?

Puntuación: 0 / 3

  • Introduction: The Rust Book (en inglés): para quién es el libro oficial y cómo está organizado. Es el mejor complemento gratuito para este curso. También existe una traducción al español de la comunidad.
  • rust-lang.org: la página oficial, con los argumentos de “¿Por qué Rust?” (rendimiento, fiabilidad, productividad) e historias de empresas que lo usan.
  • Learn Rust: la lista oficial de recursos de aprendizaje, incluidos Rust by Example y los ejercicios de Rustlings.
  • Announcing Rust 1.0: Rust Blog (en inglés): la publicación de 2015 que declaró estable a Rust, y lo que esa “estabilidad” promete para tu código.
  • Rust Foundation (en inglés): la organización sin fines de lucro que apoya al proyecto Rust y a quienes lo mantienen.