Программирование

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 — это сам пакет? Нет. Это имя и список. Код пакета в отдельном файле.