Команда Rust рада анонсировать новую версию Rust, 1.67.0. Rust - это язык программирования, позволяющий каждому создавать надежное и эффективное программное обеспечение.
Если у вас установлена предыдущая версия Rust через rustup, вы можете получить 1.67.0:
rustup update stable
Если у вас его еще нет, вы можете получить rustup с соответствующей страницы на нашем веб-сайте и ознакомиться с подробными примечаниями к выпуску 1.67.0 на GitHub.
Если вы хотите помочь нам, протестировав будущие версии, вы можете рассмотреть возможность локального обновления, чтобы использовать бета-канал (rustup default beta) или ночной канал (rustup default nightly). Пожалуйста, сообщайте о любых ошибках, с которыми вы можете столкнуться!
Что находится в стабильной версии 1.67.0
#[must_use] работает при асинхронном 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
Стандартная библиотека Rust имела канал с несколькими производителями и одним потребителем еще до версии 1.0, но в этом выпуске реализация заменена на crossbeam-channel. Этот выпуск не содержит изменений API, но новая реализация исправляет ряд ошибок и повышает производительность и ремонтопригодность реализации.
Пользователи не должны заметить каких-либо существенных изменений в поведении с момента выхода этого выпуска.
Стабилизированные API
- {integer}::checked_ilog
- {integer}::checked_ilog2
- {integer}::checked_ilog10
- {integer}::ilog
- {integer}::ilog2
- {integer}::ilog10
- NonZeroU*::ilog2
- NonZeroU*::ilog10
- NonZero
Эти API теперь стабильны в контекстах const:
Многие люди собрались вместе, чтобы создать Rust 1.67.0. Мы не смогли бы сделать этого без всех вас. Спасибо!