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.

Nivel
Introducción
Duración
25 min
Actualizada

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.

Mapa del paso

  • TAREA · sin proyectoningún Cargo.toml todavía
  • HERRAMIENTA · scaffoldinglayout convencional
  • RESULTADO · Cargo.toml + src/main.rsya compila y ejecuta
01 / 04CARGO NEW · PAQUETE · BINARIO

Crea el paquete

Crea y entra en el paquetemacOS · Linux · PowerShell
cargo new nombre_proyecto
cd nombre_proyecto

Cargo genera esta estructura:

Estructura del paquete

nombre_proyecto/

  • Cargo.toml
  • .gitignore
  • src/
    • main.rs

Y src/main.rs ya contiene un programa que compila y se ejecuta:

src/main.rsCompila
fn main() {
    println!("Hello, Rust!");
}

Lee el manifest

Cargo.toml
[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

Comprueba, compila y ejecutamacOS · Linux · PowerShell
cargo check
cargo build
cargo run

cargo 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:

Compila en modo releasemacOS · Linux · PowerShell
cargo build --release

El binario optimizado queda en target/release/, a costa de una compilación más lenta que en modo debug.

Prueba y documenta

Ejecuta las pruebas y genera la documentaciónmacOS · Linux · PowerShell
cargo test
cargo doc --open

cargo 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 new crea la estructura mínima de un paquete (Cargo.toml, src/main.rs, .gitignore); --lib genera una librería en su lugar.
  • Cargo.toml declara el paquete y sus dependencias; Cargo.lock fija las versiones exactas resueltas y no se edita a mano.
  • cargo check comprueba tipos sin generar binario; cargo build lo genera en target/debug/; cargo run compila si hace falta y ejecuta; --release optimiza y compila más despacio.
  • cargo test ejecuta cualquier función #[test]; cargo doc --open genera y abre documentación HTML desde comentarios ///.

Fuentes