Lección 3
Tu primer proyecto con Cargo
Crea un paquete binario con cargo new, entiende Cargo.toml y Cargo.lock, y recorre el ciclo check, build, run, test y doc.
De la toolchain instalada al primer paquete
En la lección anterior instalaste rustup, rustc, Cargo y el resto de
herramientas del ecosistema. Ahora toca usarlas: no compilarás un archivo
suelto con rustc, sino que crearás un paquete gestionado por Cargo, la
forma en la que se construye prácticamente todo el código Rust real.
Esta lección recorre el ciclo completo: crear el paquete, entender qué describe cada archivo que genera, y ejecutar los comandos que usarás cada día mientras escribes código.
Crea el paquete
cargo new nombre_proyecto
cd nombre_proyectoCargo genera esta estructura:
nombre_proyecto/
- Cargo.toml
- .gitignore
src/
- main.rs
Y src/main.rs ya contiene un programa que compila y se ejecuta:
fn main() {
println!("Hello, Rust!");
}Lee el manifest
[package]
name = "nombre_proyecto"
version = "0.1.0"
edition = "2024"
# Se rellena con `cargo add`, no a mano.
[dependencies]Cargo.toml es la única fuente de verdad sobre qué depende tu paquete y de
qué versiones. Cargo.lock, generado junto a él en la primera compilación,
fija las versiones exactas resueltas para que la build sea reproducible en
cualquier máquina; no lo edites a mano.
El ciclo check → build → run
cargo check
cargo build
cargo runcargo check es el más rápido porque no genera código máquina final.
cargo build deja un binario sin optimizar en target/debug/. cargo run
recompila solo si algo cambió y ejecuta el resultado.
Para una build optimizada:
cargo build --releaseEl binario optimizado queda en target/release/, a costa de una
compilación más lenta que en modo debug.
Prueba y documenta
cargo test
cargo doc --opencargo test descubre y ejecuta cualquier función marcada #[test] en el
crate; no hace falta configurar nada aparte. cargo doc --open genera un
sitio HTML a partir de los comentarios /// sobre la API pública y lo abre
en tu navegador.
Qué no cubre esta lección
- No profundiza en la diferencia completa entre perfiles debug y release (optimizaciones, símbolos de depuración, tiempos de compilación).
- No explica cómo leer un error del compilador cuando algo no compila: eso es la siguiente lección.
- No cubre dependencias externas reales más allá de
cargo add/cargo rm, ya vistos en la lección anterior.
Qué sigue
Con un paquete que compila, se ejecuta, se prueba y se documenta, la siguiente lección enseña a leer los mensajes del compilador cuando algo falla: qué significa cada parte de un error y cómo Rust guía hacia la solución.
Resumen
cargo newcrea la estructura mínima de un paquete (Cargo.toml,src/main.rs,.gitignore);--libgenera una librería en su lugar.Cargo.tomldeclara el paquete y sus dependencias;Cargo.lockfija las versiones exactas resueltas y no se edita a mano.cargo checkcomprueba tipos sin generar binario;cargo buildlo genera entarget/debug/;cargo runcompila si hace falta y ejecuta;--releaseoptimiza y compila más despacio.cargo testejecuta cualquier función#[test];cargo doc --opengenera y abre documentación HTML desde comentarios///.