TL;DR
Rust のクレートを公開・配布するためのレジストリ。cargo publish で、クレートの特定のバージョンをアップロードする。
仕組み
The Cargo Book によると、公開するにはまず crates.io のアカウントを作り(GitHub でのログインが必要)、API トークンを発行して cargo login で登録する。公開の前には、Cargo.toml に license、description、repository などを書いておく。cargo publish は、クレートを .crate ファイルにまとめ、コンパイルできることを確かめてからアップロードする。
注意点
- 公開は基本的に取り消せない。同じバージョンを上書きすることも、コードを削除することもできない。Effective Rust 項目21 でも、crates.io は同じバージョンでの再公開を拒否すると述べている
- 壊れたバージョンは
cargo yankで取り下げられる。取り下げたバージョンに新しく依存することはできなくなるが、既存の依存はそのまま動く。コードは削除されないので、誤って公開した秘密情報を消す手段にはならない - クレート名は早い者勝ちで、使われた名前は別のクレートに使えない。Effective Rust 項目25 でも、すべてのクレート名が 1 つの大きな名前空間で管理されていると説明している
- 公開したクレートのドキュメントは docs.rs にも公開される