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 stable 中有什么新特性
#[must_use] 对 async fn 生效
带有 #[must_use] 注解的 async 函数现在将该属性应用于返回的 impl Future 的输出。Future trait 本身已经带有 #[must_use] 注解,因此所有实现 Future 的类型都自动带有 #[must_use] 属性,这意味着之前没有办法表明 Future 的输出本身是重要的,应该以某种方式使用。
从 1.67 版本开始,如果输出没有以某种方式使用,编译器现在会发出警告。
async
async
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}::ilog10NonZeroU*::ilog2NonZeroU*::ilog10NonZero*::BITS
这些 API 现在在 const 上下文中是稳定的
查看 Rust、Cargo 和 Clippy 中的所有变化。
1.67.0 的贡献者
许多人共同努力创造了 Rust 1.67.0。没有你们所有人,我们不可能做到这一点。谢谢!