cargo update în Rust

Cargo și rustup Cargo 1.0

Actualizează versiunile dependențelor din Cargo.lock la cele mai noi compatibile cu Cargo.toml, fără să schimbe Cargo.toml.

Sintaxă
cargo update                    # actualizează toate dependențele în Cargo.lock
cargo update nume               # doar un pachet
cargo update --dry-run          # arată ce s-ar schimba
cargo update nume --precise 1.0.210

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 update să treacă la o versiune majoră nouă (de la 1.x la 2.0). Nu o face; schimbă versiunea în Cargo.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/.