Introducción a Rust
¿Qué es Rust?
Sección titulada «¿Qué es 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.
El problema que resuelve Rust
Sección titulada «El problema que resuelve Rust»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.
Cómo se compara Rust
Sección titulada «Cómo se compara Rust»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.
Dónde se usa Rust
Sección titulada «Dónde se usa Rust»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,
batyfd - WebAssembly: Rust es una de las mejores opciones para ejecutar código a velocidad nativa en el navegador
Una pequeña muestra
Sección titulada «Una pequeña muestra»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!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 9El 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: 90décima puntuación: NoneNo 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.
¿Es difícil aprender Rust?
Sección titulada «¿Es difícil aprender Rust?»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.
Práctica
Sección titulada «Práctica»1. Salúdate a ti mismo
Sección titulada «1. Salúdate a ti mismo»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!2. Un dato sobre Rust
Sección titulada «2. Un dato sobre Rust»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.Resumen
Sección titulada «Resumen»- 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 que aprendiste
Sección titulada «Comprueba lo que aprendiste»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
Para leer más
Sección titulada «Para leer más»- 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.