AI 中文社区(简称 AI 中文社),是国内学习交流AI人工智能技术的中文社区网站,这里可获取及贡献任何AI人工智能技术,我们追求自由、简洁、纯粹、分享的多元化人工智能社区。

Rust 1.95.0 正式版发布说明

Rust · 杰作 1小时前发布 · 浏览8次 · 点赞0次 · 收藏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_update

  • AtomicBool::update / AtomicBool::try_update

  • AtomicI*::update / AtomicI*::try_update

  • AtomicU*::update / AtomicU*::try_update

  • cfg_select!

  • mod core::range

  • core::range::RangeInclusive

  • core::range::RangeInclusiveIter

  • core::hint::cold_path

  • <*const T>::as_ref_unchecked

  • <*mut T>::as_ref_unchecked / <*mut T>::as_mut_unchecked

  • Vec::push_mut / Vec::insert_mut

  • VecDeque::push_front_mut / VecDeque::push_back_mut / VecDeque::insert_mut

  • LinkedList::push_front_mut / LinkedList::push_back_mut

  • Layout::dangling_ptr

  • Layout::repeat / Layout::repeat_packed / Layout::extend_packed

以下原有稳定 API 现已在常量上下文中可用:

  • fmt::from_fn

  • ControlFlow::is_break / ControlFlow::is_continue


不再稳定的 JSON 目标平台规范

Rust 1.95 在稳定通道中移除了向 rustc 传入自定义目标平台规范的支持。使用完整稳定工具链的 Rust 用户基本不受影响,因为构建标准库(包括仅 core)原本就需要 nightly 专属特性。

我们正在相关跟踪 issue 中收集自定义目标的使用场景,以评估未来是否应将该功能以某种形式稳定化。


其他变更

1.95.0 贡献者

感谢每一位为 Rust 1.95.0 付出的贡献者,没有大家就没有这次发布!


Rust 1.95.0 正式版发布说明 - Rust - 话题 - AI 中文社区
点赞(0) 收藏(0)
0条评论
现在评论,你将成小区里最靓的仔^_^
评论
游客
游客
登录后再评论
  • 一字一句需斟酌,一言一语显风范。
  • 评论消耗5积分,点赞、收藏消耗3积分。