Ce face cargo update
Cargo.lock ține versiunile exacte ale tuturor dependențelor (directe și indirecte), ca proiectul să se compileze la fel pe orice calculator. Cargo nu schimbă aceste versiuni de la sine; cargo update le actualizează la cele mai noi versiuni care respectă cerințele din Cargo.toml.
Cerința serde = "1.0.200" permite orice versiune 1.x.y de la 1.0.200 în sus, deci cargo update poate trece la 1.0.229, dar niciodată la 2.0.0. Pentru o versiune majoră nouă, schimbi Cargo.toml (sau folosești din nou cargo add).
Cu un nume de pachet, se actualizează doar acel pachet (și ce depinde de el). --precise fixează o versiune exactă, iar --dry-run doar arată ce s-ar schimba.
Exemple
Exemplul 1: Actualizarea unei dependențe
Cargo.lock avea serde 1.0.210; după cargo update a trecut la 1.0.229, împreună cu pachetele de care depinde.
$ cargo update
Rezultat în terminal
Updating crates.io index
Locking 4 packages to highest Rust 1.99.0 compatible versions
Updating serde v1.0.210 -> v1.0.229
Adding serde_core v1.0.229
Updating serde_derive v1.0.210 -> v1.0.229
Updating syn v2.0.119 -> v3.0.9
Exemplul 2: Fixarea unei versiuni exacte
--precise mută serde la 1.0.210 (de exemplu pentru a ocoli un bug dintr-o versiune nouă). Cargo ajustează și pachetele legate de el.
$ cargo update serde --precise 1.0.210
Rezultat în terminal
Updating crates.io index
Downgrading serde v1.0.229 -> v1.0.210
Removing serde_core v1.0.229
Downgrading serde_derive v1.0.229 -> v1.0.210 (available: v1.0.229)
Downgrading syn v3.0.9 -> v2.0.119
Greșeli frecvente
- Aștepți ca
cargo updatesă treacă la o versiune majoră nouă (de la 1.x la 2.0). Nu o face; schimbă versiunea înCargo.toml. - Nu pui
Cargo.lockîn git pentru un program. Pentru executabile, fișierul trebuie păstrat, ca toți să compileze cu aceleași versiuni.
Comenzi înrudite
cargo add: Adaugă o dependență (un crate de pe crates.io) în Cargo.toml, cu ultima versiune compatibilă. cargo remove o scoate.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 build: Compilează proiectul și dependențele lui. Executabilul ajunge în target/debug/ sau, cu –release, optimizat în target/release/.