Ce face cargo add
cargo add serde caută crate-ul pe crates.io, alege ultima versiune compatibilă cu versiunea ta de Rust și o scrie în secțiunea [dependencies] din Cargo.toml. Afișează și funcționalitățile (features) disponibile: cele cu + sunt active, cele cu - nu. La următorul cargo build, crate-ul este descărcat și compilat.
--features activează funcționalități opționale (de exemplu derive pentru serde). --dev pune dependența în [dev-dependencies], folosită doar de teste și exemple. nume@versiune alege o versiune anume.
Versiunea scrisă ("1.0.229") înseamnă „cel puțin 1.0.229, dar sub 2.0.0” (versionare semantică). Versiunile exacte folosite sunt salvate în Cargo.lock. Pentru a scoate o dependență: cargo remove nume.
Parametri
| Parametru | Descriere |
|---|---|
nume[@versiune] |
Crate-ul de adăugat, opțional cu versiunea. |
--features |
Funcționalitățile de activat, separate prin virgulă. |
--dev |
Adaugă la [dev-dependencies]. |
--no-default-features |
Dezactivează funcționalitățile implicite. |
--path / --git |
Dependență dintr-un director local sau dintr-un depozit git. |
Exemple
Exemplul 1: Adăugarea unei dependențe
Cargo a ales rand 0.10.3, a arătat funcționalitățile și a blocat (în Cargo.lock) versiunile tuturor celor 8 pachete necesare.
$ cargo add rand
$ cat Cargo.toml
Rezultat în terminal
Updating crates.io index
Adding rand v0.10.3 to dependencies
Features:
+ alloc
+ std
+ std_rng
+ sys_rng
+ thread_rng
- chacha
- log
- serde
- simd_support
- unbiased
Updating crates.io index
Locking 8 packages to highest Rust 1.99.0 compatible versions
Adding cfg-if v1.0.5
Adding chacha20 v0.10.2
Adding cpufeatures v0.3.1
Adding getrandom v0.4.3
Adding libc v0.2.191
Adding r-efi v6.0.0
Adding rand v0.10.3
Adding rand_core v0.10.1
[package]
name = "salut"
version = "0.1.0"
edition = "2024"
[dependencies]
rand = "0.10.3"
Exemplul 2: Cu funcționalități și pentru teste
serde primește funcționalitatea derive, iar pretty_assertions ajunge în [dev-dependencies].
$ cargo add serde --features derive
$ cargo add --dev pretty_assertions
$ cat Cargo.toml
Rezultat în terminal
Updating crates.io index
Adding serde v1.0.229 to dependencies
Features:
+ derive
+ serde_derive
+ std
- alloc
- rc
- unstable
Updating crates.io index
Locking 7 packages to highest Rust 1.99.0 compatible versions
Adding proc-macro2 v1.0.107
Adding quote v1.0.47
Adding serde v1.0.229
Adding serde_core v1.0.229
Adding serde_derive v1.0.229
Adding syn v3.0.9
Adding unicode-ident v1.0.27
Updating crates.io index
Adding pretty_assertions v1.4.1 to dev-dependencies
Features:
+ std
- alloc
- unstable
Updating crates.io index
Locking 3 packages to highest Rust 1.99.0 compatible versions
Adding diff v0.1.13
Adding pretty_assertions v1.4.1
Adding yansi v1.0.1
[package]
name = "salut"
version = "0.1.0"
edition = "2024"
[dependencies]
rand = "0.10.3"
serde = { version = "1.0.229", features = ["derive"] }
[dev-dependencies]
pretty_assertions = "1.4.1"
Greșeli frecvente
- Scrii în cod
use rand::...fără să fi adăugat dependența:unresolved import `rand`. Rulează întâicargo add rand. - Folosești
#[derive(Serialize)]fără funcționalitateaderivea lui serde:cannot find derive macro. Adaug-o cucargo add serde --features derive. - Adaugi dependențe grele pentru o singură funcție mică. Fiecare crate crește timpul de compilare; verifică întâi dacă
stdare deja ce îți trebuie.
Comenzi înrudite
Cargo.toml: Fișierul de configurare al unui proiect Rust (în format TOML): numele și versiunea, ediția, dependențele, funcționalitățile și setările de compilare.cargo update: Actualizează versiunile dependențelor din Cargo.lock la cele mai noi compatibile cu Cargo.toml, fără să schimbe Cargo.toml.cargo build: Compilează proiectul și dependențele lui. Executabilul ajunge în target/debug/ sau, cu –release, optimizat în target/release/.use: Aduce în domeniu un nume dintr-un modul sau crate (std::collections::BTreeMap), ca să-l poți folosi fără calea completă.