[Перевод] Rust 1.67.0: #[must_use] для Future, смена реализации mpsc

090889b8167dd41ebbc5cf74d0b37888

Команда 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

Следующие API теперь можно использовать в контексте const:

Проверьте всё, что изменилось в Rust, Cargo и Clippy.


Участники 1.67.0

Многие люди собрались вместе, чтобы создать Rust 1.67.0. Без вас мы бы не справились. Спасибо!


От переводчиков

С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате или же в аналогичном чате для новичковых вопросов. Если у вас есть вопросы по переводам или хотите помогать с ними, то обращайтесь в чат переводчиков.

Данную статью совместными усилиями перевели andreevlex, TelegaOvoshey и funkill.

© Habrahabr.ru