Додаток E: Видання
У Розділі 1 ви побачили, що cargo new додає трохи метаданих до вашого
файлу Cargo.toml про видання. У цьому додатку йдеться про те, що це означає!
Мова Rust і компілятор мають шеститижневий цикл випусків, що означає, що користувачі отримують постійний потік нових можливостей. Інші мови програмування випускають більші зміни рідше; Rust випускає менші оновлення частіше. Після деякого часу всі ці дрібні зміни складаються. Але від випуску до випуску може бути важко озирнутися назад і сказати: “Ого, між Rust 1.10 і Rust 1.31 Rust дуже змінився!”
Приблизно кожні три роки команда Rust створює нове Rust видання. Кожне видання об’єднує можливості, що з’явилися, в чіткий пакет із повністю оновленою документацією та інструментарієм. Нові видання виходять у межах звичайного шеститижневого процесу випусків.
Видання слугують різним цілям для різних людей:
- Для активних користувачів Rust нове видання об’єднує поступові зміни в легкий для розуміння пакет.
- Для тих, хто не користується Rust, нове видання сигналізує, що з’явилися деякі значні вдосконалення, які можуть змусити знову придивитися до Rust.
- Для тих, хто розробляє Rust, нове видання надає точку збору для проєкту в цілому.
На момент написання цієї книги доступні чотири видання Rust: Rust 2015, Rust 2018, Rust 2021 і Rust 2024. Ця книга написана з використанням ідіом видання Rust 2024.
Ключ edition у Cargo.toml вказує, яке видання компілятор має
використовувати для вашого коду. Якщо ключа не існує, Rust використовує 2015 як значення
видання з міркувань зворотної сумісності.
Кожен проєкт може вибрати видання, відмінне від стандартного видання 2015 року. Видання можуть містити несумісні зміни, такі як включення нового ключового слова, що конфліктує з ідентифікаторами в коді. Однак, якщо ви не оберете ці зміни, ваш код і далі буде компілюватися, навіть якщо ви оновите версію компілятора Rust, яку використовуєте.
Усі версії компілятора Rust підтримують будь-яке видання, яке існувало до випуску цього компілятора, і вони можуть пов’язувати крейти будь-яких підтримуваних видань разом. Зміни видань впливають лише на те, як компілятор спочатку аналізує код. Тому, якщо ви використовуєте Rust 2015 і один із ваших залежних крейтів використовує Rust 2018, ваш проєкт скомпілюється і зможе використовувати той залежний крейт. Зворотна ситуація, коли ваш проєкт використовує Rust 2018, а залежний крейт використовує Rust 2015, також працює.
Щоб було зрозуміло: більшість можливостей буде доступна в усіх виданнях. Розробники, які використовують будь-яке видання Rust, і надалі бачитимуть поліпшення в міру виходу нових стабільних випусків. Однак у деяких випадках, головним чином коли додаються нові ключові слова, деякі нові можливості можуть бути доступні лише в пізніших виданнях. Вам потрібно буде перемкнутися на інші видання, якщо ви хочете скористатися такими можливостями.
Докладніше дивіться в The Rust Edition Guide. Це
повна книга, яка перелічує відмінності між виданнями та пояснює, як
автоматично оновити ваш код до нового видання за допомогою cargo fix.