Ce face cargo publish
cargo publish creează o arhivă .crate cu sursele, verifică dacă se compilează din arhivă și o încarcă pe crates.io. Ai nevoie de un cont (autentificare cu GitHub) și de un token, salvat o dată cu cargo login. Documentația apare automat pe docs.rs.
Cargo.toml trebuie să aibă câteva câmpuri în plus: description și license (de exemplu "MIT OR Apache-2.0") sunt obligatorii; repository, readme, keywords și categories sunt recomandate. Numele crate-ului trebuie să fie liber pe crates.io.
Publicarea este permanentă: o versiune nu poate fi ștearsă sau suprascrisă, iar pentru modificări publici o versiune nouă. cargo yank doar împiedică proiectele noi să aleagă acea versiune. De aceea rulează întâi cargo publish --dry-run.
Exemple
Exemplul 1: Verificare fără publicare
--dry-run parcurge toți pașii, inclusiv compilarea din arhivă, dar nu încarcă nimic. Avertismentul arată că lipsesc descrierea și licența, obligatorii la publicarea reală.
$ cargo publish --dry-run
Rezultat în terminal
Updating crates.io index
warning: manifest has no description, license, license-file, documentation, homepage or repository
|
= note: see https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info
Packaging calcule v0.1.0 (/home/ana/proiecte/calcule)
Packaged 4 files, 1.7KiB (1.0KiB compressed)
Verifying calcule v0.1.0 (/home/ana/proiecte/calcule)
Compiling calcule v0.1.0 (/home/ana/proiecte/calcule/target/package/calcule-0.1.0)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.19s
Uploading calcule v0.1.0 (/home/ana/proiecte/calcule)
warning: aborting upload due to dry run
Exemplul 2: Câmpurile necesare în Cargo.toml
Cu aceste câmpuri, cargo publish nu mai dă avertismentul. Numele trebuie să fie unic pe crates.io.
[package]
name = "calcule-note"
version = "0.1.0"
edition = "2024"
description = "Calculul mediilor și calificativelor școlare"
license = "MIT OR Apache-2.0"
repository = "https://github.com/ana/calcule-note"
readme = "README.md"
keywords = ["scoala", "note", "medie"]
categories = ["mathematics"]
Efect
Pagina crate-ului de pe crates.io afișează descrierea, licența, link-ul spre depozit, README-ul și cuvintele cheie, iar crate-ul apare în căutări și în categoria Mathematics.
Greșeli frecvente
- Publici fără
--dry-runși descoperi o greșeală. Versiunea rămâne pe crates.io pentru totdeauna; poți doar publica una nouă și dayankcelei greșite. - Incluzi din greșeală fișiere mari sau secrete (
.env, date de test). Verifică lista cucargo package --listși exclude-le cuexclude = [...]înCargo.toml. - Uiți să mărești
versionînainte de o nouă publicare:crate version `0.1.0` is already uploaded.
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 doc: Generează documentația HTML a proiectului din comentariile ///, cu toate tipurile și funcțiile publice, ca pe docs.rs.cargo add: Adaugă o dependență (un crate de pe crates.io) în Cargo.toml, cu ultima versiune compatibilă. cargo remove o scoate.comentarii și documentație (//, ///, //!): // și /* */ sunt comentarii obișnuite; /// și //! scriu documentație Markdown, transformată în HTML de cargo doc și testată de cargo test.