Cargo
Что такое Cargo?
Cargo — официальный инструмент сборки и пакетов Rust. Открытая работа над ним началась в 2014 году. Официальная установка Rust приносит его вместе с rustc. Пакеты лежат в реестре crates.io. Cargo.toml хранит имя проекта и список пакетов. Cargo.lock закрепляет точную версию. cargo build собирает программу. cargo run запускает собранную программу. rustc переводит код Rust в машинный код. Cargo выстраивает эти шаги за тебя.
Для чего нужен Cargo?
Cargo нужен, чтобы открыть новый проект Rust, добавить библиотеку и собрать программу одной командой.
- Открыть пустой проект через cargo new
- Записать библиотеку в Cargo.toml
- Собрать программу через cargo build
- Запустить тест через cargo test
Что можно делать с Cargo?
Через Cargo скачивают зависимость, проверяют код и кладут готовую программу в папку target. Правил языка Rust он не меняет. Ошибку говорит компилятор. Cargo показывает тебе эту ошибку. Незнакомый пакет может прийти с crates.io, и его код вмешивается в твою программу.
Сложно ли освоить Cargo?
Открыть первый проект легко. Трудность в версии и во времени сборки. Пакет приносит и другой пакет. Если один новее твоего Rust, сборка останавливается. Cargo.lock в программе держат ради того же результата. В библиотеке закреплять его каждый раз — не то же требование. Папка target растёт.
Плюсы и ограничения
Плюс: сборка, тест и пакет в одной команде, версия лежит в одном файле. Ограничение: первая сборка может идти долго. Cargo — не rustc и не pip. Это инструмент проекта Rust.
Основные понятия
Crate — имя пакета. Cargo.toml — список. rustc — компилятор, который переводит код.
- cargo new открывает проект
- cargo build собирает программу
- Cargo.lock хранит версию
- crates.io — реестр пакетов
Короткий пример
Эта команда собирает проект Rust в текущей папке. Сам код она не пишет.
cargo build
Частые вопросы
- Cargo и Rust — одно и то же? Нет. Rust — язык. rustc — компилятор. Cargo приносит пакет и выстраивает сборку.
- Cargo и pip — одно и то же? Часть работы похожа. Cargo для Rust и он ещё собирает программу. pip только ставит пакет Python.
- Cargo.toml — это сам пакет? Нет. Это имя и список. Код пакета в отдельном файле.