AI 中文社区(简称 AI 中文社),是国内学习交流AI人工智能技术的中文社区网站,这里可获取及贡献任何AI人工智能技术,我们追求自由、简洁、纯粹、分享的多元化人工智能社区。
Rust 1.95.0 正式版发布说明
Rust 团队很高兴地宣布推出新版本 Rust 1.95.0。Rust 是一门助力所有人构建可靠、高效软件的编程语言。
如果你已通过 rustup 安装了旧版 Rust,可通过以下命令升级到 1.95.0:
$ rustup update stable如果你尚未安装 rustup,可以在我们官网的对应页面获取,并查看 1.95.0 的详细发布说明。
如果你愿意协助测试未来版本,可以考虑将本地工具链切换至 beta 通道(rustup default beta)或 nightly 通道(rustup default nightly)。遇到任何问题请及时反馈!
Rust 1.95.0 稳定版新特性
cfg_select!
Rust 1.95 引入了 cfg_select! 宏,其作用类似于编译期针对 cfg 条件的 match 表达式。它实现了与流行的 cfg-if crate 大致相同的功能,只是语法不同。cfg_select! 会展开第一个条件判定为 true 的分支右侧代码。示例:
cfg_select! {
unix => {
fn foo() { /* 类 Unix 系统专属逻辑 */ }
}
target_pointer_width = "32" => {
fn foo() { /* 非 Unix、32 位系统逻辑 */ }
}
_ => {
fn foo() { /* 兜底实现 */ }
}
}
let is_windows_str = cfg_select! {
windows => "windows",
_ => "not windows",
};match 表达式支持 if-let 守卫
Rust 1.88 稳定了 let 链,Rust 1.95 将该能力带入 match 表达式,支持基于模式匹配的条件判断。
match value {
Some(x) if let Ok(y) = compute(x) => {
// 此处可同时使用 x 和 y
println!("{}, {}", x, y);
}
_ => {}
}注意:编译器目前不会将 if let 守卫中的匹配模式纳入整体 match 的穷尽性检查,这一点与普通 if 守卫一致。
已稳定的 API
MaybeUninit<[T; N]>: From<[MaybeUninit<T>; N]>MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>; N]>MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>]>MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>; N]>MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>]>[MaybeUninit<T>; N]: From<MaybeUninit<[T; N]>>Cell<[T; N]>: AsRef<[Cell<T>; N]>Cell<[T; N]>: AsRef<[Cell<T>]>Cell<[T]>: AsRef<[Cell<T>]>bool: TryFrom<{integer}>AtomicPtr::update/AtomicPtr::try_updateAtomicBool::update/AtomicBool::try_updateAtomicI*::update/AtomicI*::try_updateAtomicU*::update/AtomicU*::try_updatecfg_select!mod core::rangecore::range::RangeInclusivecore::range::RangeInclusiveItercore::hint::cold_path<*const T>::as_ref_unchecked<*mut T>::as_ref_unchecked/<*mut T>::as_mut_uncheckedVec::push_mut/Vec::insert_mutVecDeque::push_front_mut/VecDeque::push_back_mut/VecDeque::insert_mutLinkedList::push_front_mut/LinkedList::push_back_mutLayout::dangling_ptrLayout::repeat/Layout::repeat_packed/Layout::extend_packed
以下原有稳定 API 现已在常量上下文中可用:
fmt::from_fnControlFlow::is_break/ControlFlow::is_continue
不再稳定的 JSON 目标平台规范
Rust 1.95 在稳定通道中移除了向 rustc 传入自定义目标平台规范的支持。使用完整稳定工具链的 Rust 用户基本不受影响,因为构建标准库(包括仅 core)原本就需要 nightly 专属特性。
我们正在相关跟踪 issue 中收集自定义目标的使用场景,以评估未来是否应将该功能以某种形式稳定化。
其他变更
1.95.0 贡献者
感谢每一位为 Rust 1.95.0 付出的贡献者,没有大家就没有这次发布!
游客
- 一字一句需斟酌,一言一语显风范。
- 评论消耗5积分,点赞、收藏消耗3积分。
AI 中文社