Приложение 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, будут продолжать видеть улучшения с каждым новым стабильным выпуском. Однако в некоторых случаях, в основном при добавлении новых ключевых слов, некоторые новые функции могут быть доступны только в более поздних изданиях. Вам потребуется перейти на новое издание, если вы хотите воспользоваться такими функциями.
Для получения более подробной информации Руководство по изданиям — это полная книга об изданиях, которая перечисляет различия между ними и объясняет, как автоматически обновить ваш код до нового издания с помощью cargo fix.