Екосистема 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 2021. Попередніми редакціями були Rust 2015 та Rust 2018.
-
Редакціям дозволено вносити зворотно-несумісні зміни до мови.
-
Щоб уникнути збоїв коду, редакцію для свого пакета можна явно вказати у файлі
Cargo.toml
. -
Щоб уникнути поділу екосистеми, компілятор Rust може змішувати код, написаний для різних редакцій.
-
Варто нагадати, що використання компілятора безпосередньо, а не через
cargo
, є рідкісним явищем (більшість користувачів ніколи цього не роблять). -
Варто зазначити, що Cargo сам по собі є надзвичайно потужним і всеосяжним інструментом. Він має багато додаткових функцій, включаючи, але не обмежуючись:
- Структуру проекту/пакета
- робочі області
- Управління/кешування залежностями для розробки (dev) та часу виконання (runtime)
- сценарії побудови
- глобальна установка
- Він також розширюється за допомогою плагінів підкоманд (таких як cargo clippy).
-
Докладніше читайте в офіційній Cargo Book
-