Publish to Crates.io
Before You Publish
API Token
- Log in at https://crates.io/
- Go to Account Settings, then API Tokens
- Click “New Token”
- Give it a unique name.
- Set an expiration date (optional)
- Select the scopes you need. I used
publish-new,publish-update, andyank. - Click “Generate Token”.
The generated API token value will look similar to this:
ciowhNhkHp4WpZCYjA27AENzrhO9c9T9m4rIt is stored on crates.io as a hash (for security), and is only displayed once. Make sure you document it in a safe place.
This step only needs to be done once, unless you forget your token value, or it becomes compromised. In that case, you’ll need to revoke it and generate a new one.
Log In
Open a terminal, and type:
cargo loginWhen prompted, paste your generated token.
This token will be stored locally in ~/.cargo/credentials.toml. If you ever need to use a different token, first logout:
cargo logoutThis removes the token from your credentials file. Then, you can log in again.
Metadata in Cargo.toml
| Tag | Example |
|---|---|
| license | “MIT OR Apache-2.0” |
| description | “A short description of my package” |
| homepage | “https://serde.rs” |
| documentation | “https://docs.rs/bitflags” |
| repository | “https://github.com/rust-lang/cargo” |
| readme | “README.md” |
Source: https://doc.rust-lang.org/cargo/reference/manifest.html
Validate and Publish
Check your project for warnings and errors:
cargo packageYou can also list the contents of the generated .crate file:
cargo package --listWhen you’re ready to publish:
cargo publish