发布日期: 2026 年 3 月 5 日 官方博客原文: Announcing Rust 1.94.0
一、 综述:为什么这个版本会提升你的代码幸福感?
Rust 1.94.0 的核心主旋律是**"让原本繁琐的操作变得自然且安全"**。本次更新主要聚焦于以下三个方面:
- 零成本抽象再升级:引入了全新的定长切片窗口迭代器,彻底告别运行时的边界检查。
- 更强大的配置复用 :Cargo 终于原生支持了配置文件的
include功能,这绝对是多环境和 Monorepo 项目的福音。 - 拥抱更现代的 TOML:Cargo 解析器升级支持 TOML 1.1 标准,解除了长期以来内联表格无法换行的排版痛点。
二、 核心更新深度解析
1. 数组级切片窗口:array_windows
原文参考: Array windows
这是本次版本中最令人兴奋的 API 增强。Rust 1.94 在 slices 上新增了 array_windows 方法。 过去,如果想遍历切片的"滑动窗口",你会使用 windows,但它返回的是动态长度的切片 &[T]。如果你需要在闭包里通过索引取值,只能寄希望于编译器能把运行时的边界检查(Bounds Check)优化掉。
-
新功能:
array_windows每次迭代返回的是固定长度的数组引用&[T; N]。 -
黑魔法(类型推导): 窗口的长度
N甚至不需要你手动指定,编译器可以通过闭包内的模式匹配直接推导出来! -
官方示例解析(寻找 ABBA 模式):
rustfn has_abba(s: &str) -> bool { s.as_bytes() .array_windows() // 注意:这里没有传参数告诉它窗口多大! // 编译器看到这里解构了 4 个变量,自动推导出我们需要 4 字节的定长数组 &[u8; 4] .any(|[a1, b1, b2, a2]| (a1 != b1) && (a1 == a2) && (b1 == b2)) }
2. Cargo 配置支持 include 包含机制
原文参考: Cargo config includes
为了更好地跨项目和环境组织 Cargo 配置,.cargo/config.toml 现在原生支持了 include 机制。
-
如何使用:
toml# 简单的路径数组包含 include = [ "frodo.toml", "samwise.toml", ] # 使用内联表格实现更细粒度的控制(如标记为可选) include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ] -
好处: 你可以将团队的通用编译配置放在主文件中,并允许开发者通过
optional = true包含本地私有配置。
3. Cargo 拥抱 TOML 1.1 标准
原文参考: Cargo supports TOML 1.1
Cargo 现在支持解析 TOML v1.1 版本的清单文件。其中最直观的开发体验改进是:内联表格可以跨多行并允许尾随逗号了。
-
过去(只能挤在一行):
tomlserde = { version = "1.0", features = ["derive"] } -
现在(可以优雅地换行):
tomlserde = { version = "1.0", features = ["derive"], } -
⚠️ 兼容性保障: 当你发布 crate 时,Cargo 会自动将清单文件重写回兼容旧解析器的格式,因此你依然可以为使用旧版 Rust 的用户提供支持,无需担心 MSRV(最低支持版本)破裂。
4. 稳定的 API (Stabilized APIs)
本次更新稳定了一批非常实用的功能,特别是针对全局延迟初始化(Lazy)和数学计算。以下是核心部分的官方文档直达链接:
- 切片与数组操作 :
<[T]>::array_windows、<[T]>::element_offset - 懒加载与并发原语 :
LazyCell::get、LazyLock::get及其mut/force变体。 - 迭代器控制 :
std::iter::Peekable::next_if_map - 数学常量与转换 :
impl TryFrom<char> for usize,以及可以直接在const上下文使用的f32::mul_add和相关的欧拉常数/黄金分割率常量。
三、 总结与升级建议
如果你想查看该版本的完整细节,可以浏览详细的 1.94.0 发行说明 (Release Notes),或者分别查看 Rust、Cargo 和 Clippy 的具体变更日志。
获取最新版本
如果您之前是通过 rustup 安装的,直接运行以下命令即可:
bash
rustup update stable