Introducción a Rust
Rust es un lenguaje de programación de sistemas construido alrededor de una idea central: seguridad de memoria sin un recolector de basura. En lugar de rastrear la memoria en tiempo de ejecución como lo hacen Python o JavaScript, el compilador de Rust comprueba el uso de memoria de tu código en tiempo de compilación, usando un conjunto de reglas llamado ownership.
El código de Rust compila a un binario nativo antes de ejecutarse — el compilador (rustc) comprueba cada tipo y cada regla de ownership por adelantado. Si tu código viola alguna de ellas, nada se ejecuta: obtienes un error de compilación en vez de un crash, una fuga de memoria, o una data race.
Por qué ownership importa
- Sin recolector de basura, sin free() manual — las reglas de ownership aplicadas en tiempo de compilación significan que la memoria se limpia automática y deterministamente, sin la sobrecarga en tiempo de ejecución que añade un recolector de basura
- Sin dereferencias de punteros null — Rust no tiene null en absoluto; un valor que podría estar ausente se representa con Option<T>, y el compilador te obliga a manejar ambos casos
- Sin data races — el borrow checker garantiza que los datos mutables nunca pueden ser accedidos desde dos lugares a la vez, un problema que la mayoría de los lenguajes solo detectan en tiempo de ejecución, si es que lo hacen
- Rendimiento a la par de C y C++ — ninguna de estas garantías cuesta nada en tiempo de ejecución; todas se comprueban una sola vez, en tiempo de compilación
Una vista previa rápida
Aquí tienes un programa real de Rust, ejecutado de verdad en el propio compilador de esta página — no es una simulación:
fn main() {
let message: &str = "Hello from Rust!";
println!("{}", message);
}Hello from Rust!
Eso es todo — una variable con un tipo explícito, impresa con println!. La siguiente lección ejecuta tu primer programa completo y explica exactamente qué está pasando.
Practice Exercise
Declara una variable llamada version de tipo i32 con el valor 5, luego imprime "Rust version:" seguido de version usando println!("Rust version: {}", version).