Rustup, Rustc, Cargo y Crates
rustup
Herramienta para instalar y administrar Rust (versiones, actualizaciones, canales, etc.)
- Se instala en
~/.cargo/bine incluyerustc,cargoyrustup - Similar a
nvm/fnmen Node opyenven Python
# Actualización
rustup update stable # Actualizar Rust
rustup update # Atajo
# Información y desinstalación
rustup --version
rustup self uninstall # Desinstalar Rust completamente
rustup doc # Documentación local de Rust
rustc
Compilador de Rust
rustc --version
Compilación manual. Para proyectos simples, sin Cargo.toml.
fn main(){
println!("Hello, World!");
}
# 1. Compilar
rustc <filename.rs> # Ejemplo: rustc hello.rs
# 2. Ejecutar
./<filename> # Ejemplo: ./hello
# Una sola línea
rustc <filename.rs> && ./<filename>
Cargo
Herramienta oficial de compilación y administrador de paquetes de Rust. Se instala automáticamente con rustup.
Archivos de configuración
Cargo.toml: Manifiesto del proyecto (metadatos y dependencias).Cargo.lock: Registro automático de versiones exactas.main.pdb: Información de depuración del proyecto.
Semantic Versioning (MAJOR.MINOR.PATCH)
- PATCH (0.8.5 → 0.8.6): Corrección de errores, totalmente compatible
- MINOR (0.8.5 → 0.9.0): Nuevas funciones, compatible hacia atrás
- MAJOR (0.8.x → 1.0.0): Cambios incompatibles
Ejemplo Cargo.toml
Cargo.toml
[package]
name = "app-name"
version = "0.1.0"
edition = "2024"
[dependencies]
tokio = { version = "1.45.0", features = ["full"] }
serde = { version = "1.0.209", features = ["derive"] }
serde_json = "1.0.127"
Crear y compilar proyectos
# Crear nuevo proyecto
cargo new <project-name> # En nueva carpeta
cargo init # En carpeta actual
# Solo compilar
cargo build # Modo debug (target/debug)
cargo build --release # Modo release con optimizaciones (target/release)
cargo build -r # Atajo para --release
# Compilar y ejecutar
cargo run # Debug
cargo run --release # Release
cargo run -r # Atajo para --release
Nota: Después de
cargo build, el binario se debe ejecutar manualmente:
- Debug:
./target/debug/<app-name>- Release:
./target/release/<app-name>
Agregar dependencias
cargo add <package1> <package2> # Dependencia simple
cargo add <package> -F <feature1> # Con características
cargo add <package> -F <feature1> <feature2> # Múltiples características
cargo add <package1> <package2/feature1> <package2/feature2> # Múltiples paquetes
Actualizar dependencias
# Actualizar a versiones menores compatibles
cargo update # v0.8.5 -> v0.8.6
Para versiones mayores, modificar Cargo.toml manualmente: rand = "0.8.5" → rand = "0.9.0"
Utilidades
cargo check # Análisis rápido sin generar binario
cargo test # Ejecutar pruebas
cargo doc # Generar documentación
cargo doc --open # Generar y abrir documentación
cargo --version # Ver versión de Cargo
Flujo de trabajo típico
- Crear:
cargo new <project-name> - Dependencias:
cargo add <package> - Desarrollo:
cargo check/cargo run - Testing:
cargo test - Producción:
cargo build --release
Crates
Los paquetes en Rust se llaman crates (bibliotecas, módulos o programas completos).
- Repositorio oficial: crates.io (lib.rs es una alternativa no oficial)
- Crates de biblioteca (lib): Funciones y estructuras reutilizables
- Crates de ejecutable (bin): Programas compilados ejecutables