Команда Rust рада сообщить о новой версии языка — 1.67.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup
, то для обновления до версии 1.67.0 вам достаточно выполнить команду:
rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta
) или nightly (rustup default nightly
) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.
Что стабилизировано в 1.67.0
#[must_use]
влияет на async fn
Асинхронные функции с аннотацией #[must_use]
теперь применяют этот атрибут к выходному значению возвращаемой impl Future
. Сам трейт Future
всегда аннотирован атрибутом #[must_use]
, так что все типы, реализующие Future
, автоматически становятся #[must_use]
. Напомним, что ранее не было способа указать, что выходные данные Future
сами по себе являются значимыми и должны как-либо использоваться.
Начиная с 1.67 компилятор предупреждает, если выходные данные никак не используются.
#[must_use]
async fn bar() -> u32 { 0 }
async fn caller() {
bar().await;
}
warning: unused output of future returned by `bar` that must be used
--> src/lib.rs:5:5
|
5 | bar().await;
| ^^^^^^^^^^^
|
= note: `#[warn(unused_must_use)]` on by default
Обновлена реализация std::sync::mpsc
Начиная с версии 1.0 стандартная библиотека Rust содержит каналы со множеством производителей и одним потребителем. С текущего выпуска они будут основаны на пакете crossbeam-channel
. Этот выпуск не содержит изменений в API, однако такая реализация исправляет некоторые ошибки и улучшает производительность и поддерживаемость.
Благодаря этому пользователи не заметят значительных изменений в поведении.
Стабилизированные API
{integer}::checked_ilog
{integer}::checked_ilog2
{integer}::checked_ilog10
{integer}::ilog
{integer}::ilog2
{integer}::ilog10
NonZeroU*::ilog2
NonZeroU*::ilog10
NonZero*::BITS
Следующие API теперь можно использовать в контексте const
:
Проверьте всё, что изменилось в Rust, Cargo и Clippy.
Участники 1.67.0
Многие люди собрались вместе, чтобы создать Rust 1.67.0. Без вас мы бы не справились. Спасибо!
От переводчиков
С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате или же в аналогичном чате для новичковых вопросов. Если у вас есть вопросы по переводам или хотите помогать с ними, то обращайтесь в чат переводчиков.
Данную статью совместными усилиями перевели andreevlex, TelegaOvoshey и funkill.