Зависимости и crates.io

Подключаем готовые библиотеки с crates.io через Cargo.toml и cargo add.

crates.io — центральный реестр пакетов Rust, откуда cargo скачивает сторонние библиотеки (крейты).

Экосистема крейтов

Не всё нужно писать самому. На crates.io опубликованы десятки тысяч библиотек: для работы с JSON, HTTP, датами, случайными числами и почти чем угодно. Подключить зависимость — дело одной строки.

Добавление зависимости

Самый простой способ — команда cargo add: она дописывает зависимость в Cargo.toml и подбирает версию.

cargo add rand   # добавит крейт rand для случайных чисел

После этого в манифесте появится строка в секции [dependencies]:

[dependencies]
rand = "0.8"

Можно и просто вписать строку в Cargo.toml вручную — при следующей сборке cargo сам скачает крейт и его зависимости.

Использование крейта

Подключённый крейт доступен по имени. Вот пример с rand — генерация случайного числа (этот код требует зависимости, поэтому в браузере не запускается, но показывает идею):

use rand::Rng;

fn main() {
    let mut rng = rand::thread_rng();
    let n: u32 = rng.gen_range(1..=6); // бросок кубика
    println!("выпало: {n}");
}

Версионирование и Cargo.lock

Версии в Cargo.toml указывают по семантическому версионированию. Строка "0.8" означает «совместимая с 0.8» — cargo возьмёт свежую подходящую. При первой сборке создаётся файл Cargo.lock, который фиксирует точные версии всех зависимостей, чтобы сборка была воспроизводимой на любой машине.

КомандаЧто делает
cargo add имядобавить зависимость
cargo buildскачать и собрать зависимости
cargo updateобновить версии в пределах допустимых
cargo doc --openсобрать и открыть документацию проекта и зависимостей

Итог

  • Сторонние библиотеки берут с crates.io; добавляют через cargo add или вручную в Cargo.toml.
  • Версии указывают по семверу; точные версии фиксирует Cargo.lock для воспроизводимости.
  • После добавления крейт доступен по имени через use.
Проверьте себя
1. Что такое crates.io?
AРедактор кода
BЦентральный реестр пакетов Rust, откуда cargo скачивает библиотеки
CКомпилятор
DФайл конфигурации
2. Как проще всего добавить зависимость в проект?
AСкопировать исходники вручную
BКомандой cargo add имя, которая впишет её в Cargo.toml
CПереустановить Rust
DЧерез rustup
3. Зачем нужен файл Cargo.lock?
AХранит исходный код
BФиксирует точные версии всех зависимостей для воспроизводимой сборки
CУскоряет компиляцию
DСодержит тесты
Поддержать проект