Comandi Cargo in Rust
Cargo è lo strumento integrato di Rust per la compilazione, gestione delle dipendenze, testing, documentazione e pubblicazione dei progetti.
Creare un Progetto
# Progetto binario (eseguibile)
cargo new mio_progetto
# Progetto libreria
cargo new mia_libreria --lib
# Inizializzare in una directory esistente
cargo init
cargo init --lib
Compilazione
# Compila in modalità debug (veloce, non ottimizzata)
cargo build
# Compila in modalità release (ottimizzata)
cargo build --release
# Controlla errori senza generare il binario (più veloce)
cargo check
Il binario si trova in target/debug/ o target/release/.
Esecuzione
# Compila ed esegue
cargo run
# Con argomenti per il programma
cargo run -- arg1 arg2
# In modalità release
cargo run --release
Testing
# Esegui tutti i test
cargo test
# Test specifico per nome
cargo test nome_test
# Solo doc-test
cargo test --doc
# Mostra output di println
cargo test -- --nocapture
# Test in un singolo thread
cargo test -- --test-threads=1
# Esegui test ignorati
cargo test -- --ignored
# Test di un modulo specifico
cargo test modulo::sotto_modulo
Documentazione
# Genera la documentazione HTML
cargo doc
# Genera e apre nel browser
cargo doc --open
# Includi elementi privati
cargo doc --document-private-items
# Documentazione senza dipendenze
cargo doc --no-deps
Formattazione e Linting
# Formatta il codice secondo le convenzioni Rust
cargo fmt
# Verifica la formattazione (senza modificare)
cargo fmt --check
# Linting avanzato con Clippy
cargo clippy
# Clippy che blocca su warning
cargo clippy -- -D warnings
Gestione Dipendenze
# Aggiungi una dipendenza
cargo add serde
# Con features
cargo add serde --features derive
# Versione specifica
cargo add tokio@1.0
# Dipendenza di sviluppo
cargo add --dev criterion
# Rimuovi una dipendenza
cargo remove serde
# Aggiorna dipendenze
cargo update
# Mostra albero delle dipendenze
cargo tree
Benchmark
# Esegui benchmark (richiede nightly o crate come criterion)
cargo bench
# Benchmark specifico
cargo bench nome_bench
Pubblicazione
# Login su crates.io
cargo login
# Verifica prima di pubblicare
cargo publish --dry-run
# Pubblica il crate
cargo publish
# Pacchetta il crate
cargo package
Pulizia
# Rimuovi la directory target
cargo clean
Configurazione Cargo.toml
[package]
name = "mio-progetto"
version = "0.1.0"
edition = "2024"
authors = ["Nome <email@esempio.com>"]
description = "Descrizione del progetto"
license = "MIT"
repository = "https://github.com/utente/progetto"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
[dev-dependencies]
criterion = "0.5"
[profile.release]
opt-level = 3
lto = true
[profile.dev]
opt-level = 0
debug = true
Comandi Aggiuntivi (Plugin)
# Installa un sotto-comando
cargo install cargo-watch
cargo install cargo-expand
cargo install cargo-tarpaulin
# Watch: ricompila automaticamente ai cambiamenti
cargo watch -x run
# Expand: mostra il codice dopo l'espansione delle macro
cargo expand
# Tarpaulin: code coverage
cargo tarpaulin
Conclusione
Cargo centralizza tutto il workflow di sviluppo Rust in un unico strumento. Dalla creazione del progetto alla pubblicazione su crates.io, passando per compilazione, testing, documentazione e linting, Cargo rende lo sviluppo Rust produttivo e piacevole. Usa cargo clippy e cargo fmt regolarmente per mantenere il codice pulito e idiomatico.