Шпаргалка по Cargo

Заметка третья · 4 минуты чтения

Cargo — система сборки и менеджер пакетов в одном инструменте. Он скачивает зависимости, собирает проект, запускает тесты и публикует библиотеки.

Команды на каждый день

КомандаЧто делает
cargo new имяСоздаёт проект в новом каталоге. С флагом --lib — библиотеку.
cargo checkПроверяет код без генерации исполняемого файла. Заметно быстрее сборки, удобно запускать постоянно.
cargo runСобирает и запускает программу. Аргументы программе передаются после --.
cargo build --releaseСборка с оптимизациями, результат в target/release.
cargo testЗапускает модульные и интеграционные тесты, а заодно примеры из документации.
cargo add serdeДобавляет зависимость в Cargo.toml.
cargo updateОбновляет зависимости в пределах разрешённых версий.
cargo fmtФорматирует код по общепринятому стилю.
cargo clippyЛинтер: находит подозрительные места и предлагает более идиоматичный код.
cargo doc --openСобирает документацию проекта и всех зависимостей и открывает её в браузере.
cargo treeПоказывает дерево зависимостей.

Cargo.toml

Описание проекта лежит в файле Cargo.toml в корне. Минимальный вариант с одной зависимостью выглядит так:

[package]
name = "hello"
version = "0.1.0"
edition = "2024"

[dependencies]
serde = { version = "1", features = ["derive"] }

[profile.release]
lto = true          # оптимизация на этапе компоновки
codegen-units = 1   # медленнее сборка, быстрее программа

Запись version = "1" означает «любая версия 1.x»: Cargo следует семантическому версионированию и не обновит зависимость до несовместимой 2.0. Точные версии всех пакетов он записывает в Cargo.lock — этот файл стоит хранить в репозитории, чтобы сборка у всех получалась одинаковой.

Структура проекта

hello/
├── Cargo.toml
├── Cargo.lock
├── src/
│   ├── main.rs      # точка входа программы
│   └── lib.rs       # корень библиотеки, если она есть
├── tests/           # интеграционные тесты
├── examples/        # примеры: cargo run --example имя
└── target/          # результаты сборки, в репозиторий не кладут

Полезные привычки