Para desarrollar en Rust, el punto de entrada recomendado por el equipo oficial es rustup, un instalador que además gestiona versiones del compilador. No se instala rustc directamente; rustup lo descarga y lo mantiene actualizado por ti.

Linux, macOS y sistemas Unix

Abre una terminal y ejecuta el comando oficial:

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

El script descarga rustup-init y lo ejecuta. Verás un menú interactivo con tres opciones: instalación por defecto (recomendada), personalizada o cancelar. Para la mayoría de los casos basta con presionar 1 y Enter.

Al terminar, el script configura el directorio ~/.cargo/bin en tu PATH. Puede que necesites abrir una nueva terminal (o ejecutar source ~/.cargo/env) para que el cambio surta efecto.

Windows

En Windows, descarga el ejecutable directamente desde la página oficial:

Ejecuta el archivo y sigue las instrucciones en pantalla. Durante el proceso puede pedirte que instales las MSVC Build Tools de Visual Studio — son necesarias para compilar en Windows. Acepta e instálalas cuando se soliciten.

Las herramientas quedan en %USERPROFILE%\.cargo\bin.

Windows Subsystem for Linux (WSL)

Si usas WSL, el proceso es el mismo que en Linux: ejecuta el comando curl dentro de tu terminal WSL.

Verificar la instalación

Una vez instalado, abre una terminal nueva y ejecuta:

rustc --version
cargo --version

Deberías ver algo como:

rustc 1.87.0 (9fcaa5...)
cargo 1.87.0 (...)

Si rustc --version falla con “command not found”, el problema casi siempre es el PATH. En Linux/macOS ejecuta:

source ~/.cargo/env

O agrega esta línea a tu ~/.bashrc / ~/.zshrc:

export PATH="$HOME/.cargo/bin:$PATH"

Código de ejemplo

use std::process::Command;

fn main() {
    println!("--- Verificando la instalación ---");

    let version = Command::new("rustc")
        .arg("--version")
        .output();

    match version {
        Ok(o) if o.status.success() => {
            let v = String::from_utf8_lossy(&o.stdout);
            println!("rustc instalado: {}", v.trim());
        }
        _ => println!("Error: rustc no está en el PATH."),
    }

    let cargo_v = Command::new("cargo")
        .arg("--version")
        .output();

    match cargo_v {
        Ok(o) if o.status.success() => {
            let v = String::from_utf8_lossy(&o.stdout);
            println!("cargo instalado: {}", v.trim());
        }
        _ => println!("Error: cargo no está en el PATH."),
    }
}

### Explicación del Código
Command::new("rustc").arg("--version") ejecuta rustc --version como subproceso. .output() captura tanto stdout como el código de salida.
– La variable version recibe un Result<Output, Error>. El pattern Ok(o) if o.status.success() combina el unwrap del Result con la verificación de que el proceso terminó sin error.
String::from_utf8_lossy(&o.stdout) convierte los bytes de stdout a texto; .trim() elimina el salto de línea final.
– El mismo patrón se repite para cargo, confirmando que ambas herramientas quedaron disponibles en el PATH.


Gestión del toolchain

Una vez instalado, rustup se usa también para mantener Rust actualizado y gestionar versiones:

rustup update          # actualiza a la última versión estable
rustup show            # muestra la toolchain activa y las instaladas
rustup toolchain install nightly   # instala el canal nightly

Rust tiene tres canales de versiones: stable (producción), beta (próxima versión) y nightly (funciones experimentales). Para la mayoría de proyectos, stable es suficiente.

Para desinstalar Rust completamente:

rustup self uninstall

4