Зависимости и 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.