$ sudo teach IT
Модуль 7 · Публикация крейтов

Публикация на crates.io

cargo publish загружает крейт в реестр. После этого любой разработчик может добавить его как зависимость.

🔧 Практика 🕐 ~20 минут
🔑

Шаг 1 — Получить API-токен

1
Зарегистрируйтесь на crates.io через GitHub-аккаунт
2
Перейдите в Account Settings → API Tokens → New Token
3
Сохраните токен командой:
cargo login ваш_токен_здесь
Токен сохраняется в ~/.cargo/credentials.toml
🚀

Шаг 2 — Опубликовать

Терминал
cargo publish --dry-run   # 1. Убедиться что всё ОК
cargo publish             # 2. Опубликовать
✅ После публикации крейт появится на crates.io/crates/имя, а документация — на docs.rs/имя (генерируется автоматически в течение нескольких минут).
🔄

Обновление — новая версия

Одну и ту же версию нельзя опубликовать дважды. Для обновления нужно увеличить версию в Cargo.toml:

Правила SemVer
PATCH 0.1.0 → 0.1.1 — исправление багов, без изменения API
MINOR 0.1.0 → 0.2.0 — новые возможности, обратная совместимость сохранена
MAJOR 0.1.0 → 1.0.0 — breaking changes, API изменился несовместимо
# Обновили Cargo.toml:
version = "0.1.1"

# И публикуем снова:
cargo publish
🚫

cargo yank — скрыть версию

Удалить опубликованный крейт нельзя — но можно сделать версию "yanked": она не будет предлагаться для новых проектов, но существующие продолжат её получать.

Терминал
cargo yank --version 0.1.0             # скрыть версию
cargo yank --version 0.1.0 --undo      # отменить yank
📌 Что важно запомнить
→ cargo login токен → cargo publish — полный процесс публикации
→ Одну версию нельзя опубликовать дважды — нужно увеличить version
→ docs.rs генерирует документацию автоматически после публикации
→ cargo yank — скрыть версию (не удалить)

Тест

3 вопроса