文章目录
-
-
- 一、快速升级方式
- 二、语言层面重大更新
-
- [1. `cfg_select!` 宏正式稳定](#1.
cfg_select!宏正式稳定) - [2. `match` 表达式支持 `if let` 守卫(let chains 能力进一步增强)](#2.
match表达式支持if let守卫(let chains 能力进一步增强)) - [3. 其他语言改进](#3. 其他语言改进)
- [1. `cfg_select!` 宏正式稳定](#1.
- 三、编译器与平台支持升级
-
- 编译器优化
- [Tier 2 平台提升(含宿主工具链)](#Tier 2 平台提升(含宿主工具链))
- [四、标准库与稳定化 API(核心看点)](#四、标准库与稳定化 API(核心看点))
- 五、工具链与兼容性变更(升级前必看)
- 总结与建议
-
Rust 1.95.0 的分支时间是 2026 年 2 月 27 日,由 Rust Release Team 推出。本次更新在语言层面 、编译器与平台支持 、标准库 API 以及工具链上都有重要改进,尤其适合嵌入式、Apple 生态和无锁并发场景的开发者。
一、快速升级方式
如果你已经通过 rustup 安装了 Rust,直接执行以下命令即可升级:
bash
rustup update stable
尚未安装 Rust 的同学请访问 Rust 官方安装页面 获取 rustup,完整发布说明见 Rust 1.95.0 Release Notes。
想提前尝鲜 beta/nightly 版本的可以执行:
bash
rustup default beta # 或 nightly
二、语言层面重大更新
1. cfg_select! 宏正式稳定
这是本次最重磅的语言特性!cfg_select! 宏相当于针对 cfg 配置的编译期 match 表达式 ,可以完美替代社区广泛使用的 cfg-if crate。
rust
cfg_select! {
if cfg!(target_os = "linux") {
// Linux 专有代码
} else if cfg!(target_os = "macos") {
// macOS 专有代码
} else {
// 默认实现
}
}
它会直接展开为第一个匹配 true 的分支,代码更简洁、零依赖、风格统一。
2. match 表达式支持 if let 守卫(let chains 能力进一步增强)
从 Rust 1.88 稳定的 let chains 能力正式引入 match:
rust
match value {
Some(x) if let Ok(y) = x.parse::<i32>() && y > 0 => { /* 处理正整数 */ }
_ => { /* 其他情况 */ }
}
注意 :if let 守卫中的模式目前不会 参与 match 的穷尽性检查(exhaustiveness checking),与普通 if 守卫行为一致。
3. 其他语言改进
irrefutable_let_patternslint 不再对let chains报错- 支持重命名导入路径段中的关键字(如
use some::r#type as my_type;) - PowerPC / PowerPC64 内联汇编稳定
- 常量求值中填充字节行为更一致
- 模式匹配语义独立于 crate 与模块作用域
三、编译器与平台支持升级
编译器优化
--remap-path-scope参数稳定,支持更精细控制二进制中的路径重映射,提升构建可复现性和安全审计能力。
Tier 2 平台提升(含宿主工具链)
以下平台正式晋升为 Tier 2,官方提供预编译二进制和构建支持:
| 目标平台 | 主要适用场景 |
|---|---|
powerpc64-unknown-linux-musl |
嵌入式 Linux、工业控制 |
aarch64-apple-tvos / -sim |
Apple TV 应用开发 |
aarch64-apple-watchos / -sim |
Apple Watch 应用开发 |
aarch64-apple-visionos / -sim |
Apple Vision Pro 空间计算 |
四、标准库与稳定化 API(核心看点)
新稳定接口
| API | 功能亮点 | 适用场景 |
|---|---|---|
MaybeUninit<[T; N]> 系列 From/AsRef/AsMut |
未初始化数组/切片的零成本转换 | no_std 内存管理 |
Cell<[T; N]> / Cell<[T]> 的 AsRef |
Cell 包装的数组/切片引用转换 | 内部可变性批量处理 |
bool: TryFrom<{integer}> |
整数 → bool 安全显式转换 | 防止隐式转换错误 |
Atomic*::update / try_update |
原子操作的函数式更新原语 | 无锁并发,减少 CAS 循环 |
core::range 模块 & RangeInclusive |
闭区间范围原生 no_std 支持 |
嵌入式/内核开发 |
core::hint::cold_path |
标记冷路径,辅助分支预测优化 | 错误处理、边界检查 |
裸指针 as_ref_unchecked / as_mut_unchecked |
高效不安全指针引用转换 | FFI、驱动开发 |
常量上下文(const)能力扩展
以下 API 现在可在 const 上下文中使用:
fmt::from_fnControlFlow::is_break/is_continue
五、工具链与兼容性变更(升级前必看)
Cargo :cargo report * 系列命令的手册页文档大幅增强。
Rustdoc:
- 搜索结果中不稳定项权重降低
- 新增"隐藏已弃用项"开关,提升文档阅读体验
重要兼容性变更:
- 数组类型推导约束收紧(部分场景需显式标注类型)
$crate导入规则变更:use $crate::{self};未重命名形式被禁止- 常量求值填充字节行为一致化(可能导致极少数
const/static代码编译失败) - 模糊全局导入特性将触发
ambiguous_glob_imported_traits未来兼容性警告
总结与建议
Rust 1.95.0 是一次务实且高质量的版本更新:
cfg_select!让条件编译更"Rust 原生";Atomic::update让并发代码更安全优雅;- Apple 生态和 PowerPC 平台支持进一步完善,嵌入式开发者值得开心;
- 常量能力和标准库改进让
no_std场景更加丝滑。
推荐大家尽快升级 ,尤其是正在做 Apple 设备开发、嵌入式项目或重度使用 cfg-if 的同学,cfg_select! 能直接减少一个外部依赖。
你对本次更新最期待哪个特性?欢迎在评论区留言讨论!如果你的项目遇到升级后的兼容性问题,也可以贴代码,我会尽力帮忙排查。
参考链接:
- 官方发布博客(英文)
- Rust 1.95.0 完整 Release Notes
- Rust Platform Support 文档
喜欢这篇文章的话,点赞 + 收藏 + 关注 一键三连,我会持续带来 Rust 最新动态和实战解析!
标签:Rust、Rust 1.95、Rust 版本发布、Rust 语言特性、cfg_select、no_std、Apple 开发、嵌入式 Rust