$ sudo teach IT
Модуль 4 · Зависимости и crates.io

crates.io — реестр пакетов

crates.io — официальный публичный реестр крейтов Rust. Здесь живут все библиотеки, которые вы добавляете через Cargo.

📖 Теория 🕐 ~15 минут
🌐

Что такое crates.io

crates.io — это централизованный реестр, где разработчики публикуют свои Rust-библиотеки (крейты). Когда вы добавляете зависимость в Cargo.toml, Cargo скачивает её именно оттуда.

📦 Реестр
Более 150 000 крейтов. Любой разработчик может опубликовать свой крейт бесплатно.
🔒 Надёжность
Опубликованный крейт нельзя удалить — только yanked (скрыть). Ваш проект не сломается.
📖 Документация
Каждый крейт автоматически получает документацию на docs.rs — генерируется из кода при публикации.
🔍 Поиск
Поиск по названию, описанию, категориям. Видны статистика загрузок и версии.
🔍

Как искать крейты

Два способа найти нужный крейт:

🌐
Через сайт crates.io
Поиск, фильтрация по категориям, рейтинг популярности, история версий.
💻
Через cargo search
Поиск прямо из терминала.
Терминал
cargo search serde
# serde = "1.0.219"      # Serialization and deserialization framework
# serde-xml-rs = "0.6.0" # xml support for serde
# ...
➕

cargo add — добавить зависимость

Терминал
cargo add serde                        # добавить последнюю версию
cargo add serde@1.0.100                # конкретная версия
cargo add serde --features derive      # с фичей
cargo add tokio --features full        # несколько фич
cargo add --dev pretty_assertions      # dev-зависимость
cargo add --build cc                   # build-зависимость

cargo add автоматически находит последнюю стабильную версию и добавляет строку в Cargo.toml. Не нужно вручную смотреть версию на crates.io.

⭐

Популярные крейты — что знать

serde Сериализация / десериализация (JSON, TOML, YAML и др.)
tokio Асинхронная среда выполнения
reqwest HTTP-клиент
clap Парсинг аргументов командной строки
anyhow Удобная обработка ошибок
rayon Параллельные итераторы
log / tracing Логирование
📌 Что важно запомнить
→ crates.io — официальный реестр. cargo add имя — добавить крейт
→ cargo search имя — поиск из терминала
→ Документация любого крейта — docs.rs/имя
→ Опубликованные крейты нельзя удалить — только скрыть (yank)