Rust 团队很高兴地宣布 Rust 的新版本 1.67.0 发布。Rust 是一种编程语言,旨在赋能所有人构建可靠且高效的软件。
如果您之前通过 rustup 安装了 Rust,您可以使用以下命令获取 1.67.0 版本:
$ rustup update stable
如果您尚未安装,您可以从我们网站的相应页面获取 rustup
,并查看 GitHub 上关于 1.67.0 版本的详细发布说明。
如果您想通过测试未来的版本来帮助我们,您可以考虑在本地更新以使用 beta 频道 (rustup default beta
) 或 nightly 频道 (rustup default nightly
)。请报告您可能遇到的任何错误!
1.67.0 稳定版中的新内容
#[must_use]
对 async fn
生效
使用 #[must_use]
注解的 async
函数现在将该属性应用于返回的 impl Future
的输出。Future
trait 本身已经使用 #[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*::BITS
这些 API 现在在 const 上下文中是稳定的
查看 Rust、Cargo 和 Clippy 中的所有更改。
1.67.0 版本的贡献者
许多人齐心协力创建了 Rust 1.67.0 版本。没有你们大家,我们不可能做到。谢谢!感谢!