Экосистема Rust
Экосистема Rust состоит из ряда инструментов, основными из которых являются:
-
rustc: компилятор Rust, который превращает файлы.rsв исполняемые файлы и другие промежуточные форматы. -
cargo: менеджер зависимостей и система сборки Rust. Cargo умеет загружать зависимости, обычно размещённые на https://crates.io, и передавать ихrustcпри сборке проекта. Cargo также включает встроенное средство запуска тестов, которое выполняет модульные тесты. -
rustup: установщик и средство обновления инструментария Rust. Этот инструмент используется для установки и обновленияrustcиcargoпри выходе новых версий Rust. Кроме того,rustupможет загружать документацию стандартной библиотеки. Можно одновременно установить несколько версий Rust, иrustupпозволит переключаться между ними по мере необходимости.
Ключевые моменты:
-
У Rust стремительный график релизов: новая версия выходит каждые шесть недель. Новые версии обратно совместимы со старыми и при этом добавляют новые возможности.
-
Существует три вида релизов: «stable», «beta» и «nightly».
-
Новые возможности тестируются в «nightly», а «beta» — это то, что становится «stable» каждые шесть недель.
-
Зависимости также могут подтягиваться из альтернативных реестров, git-репозиториев, локальных папок и других источников.
-
У Rust также есть редакции: текущая редакция — Rust 2024. Предыдущими были редакции Rust 2015, Rust 2018 и Rust 2021.
-
Редакциями позволено вносить обратно несовместимые изменения в язык.
-
Чтобы избежать сбоев, редакцию для своего пакета можно явно указать в файле
Cargo.toml. -
Чтобы избежать разделения экосистемы, компилятор Rust может смешивать код, написанный для разных редакций.
-
Стоит упомянуть, что использование компилятора напрямую, а не через
cargo, является редким явлением (большинство пользователей никогда этого не делают). -
Стоит отметить, что сам Cargo — чрезвычайно мощный и всеобъемлющий инструмент. Он умеет многое, в том числе:
- Структура проекта/пакета
- рабочие пространства (workspaces)
- Управление зависимостями для разработки (dev) и времени выполнения (runtime)
- скрипты сборки (build scripts)
- глобальная установка (
cargo install) - Он также расширяем с помощью плагинов подкоманд (таких как cargo clippy).
-
Подробнее читайте в официальной книге по Cargo
-