Приложение E: редакции
В главе 1 вы узнали, что cargo new добавляет в файл Cargo.toml немного метаданных о редакции. В этом приложении рассказывается, что это означает!
Язык Rust и его компилятор выпускают обновления каждые шесть недель, а значит, пользователи постоянно получают новые возможности. Другие языки программирования выпускают более крупные изменения реже; Rust же выпускает небольшие обновления чаще. Со временем все эти небольшие изменения накапливаются. Но при переходе от одной версии к другой бывает трудно оглянуться назад и сказать: «Ничего себе, Rust сильно изменился между версиями 1.10 и 1.31!»
Примерно раз в три года команда 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, продолжат получать улучшения с выходом новых стабильных версий. Однако в некоторых случаях, главным образом при добавлении новых ключевых слов, отдельные новые возможности могут быть доступны только в более поздних редакциях. Чтобы воспользоваться такими возможностями, вам потребуется перейти на другую редакцию.
Подробнее см. в Руководстве по редакциям Rust. Это полноценная книга, в которой перечислены различия между редакциями и объясняется, как автоматически обновить код до новой редакции с помощью cargo fix.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/book/appendix-05-editions.html