当前位置:首页 > 科技  > 软件

Rust 又发布新的 1.79.0 稳定版本了!

来源: 责编: 时间:2024-06-24 17:15:13 79观看
导读在 2024 年 6 月 13 日,Rust 团队又发布 Rust 1.79.0 新版本了,一起来看看该版本到底发生了哪些变化吧。对于喜欢尝新的伙伴,又可以体验到更多的创新和改进了。老规则,如果你渴望尝试最新版本的 Rust,只需通过 rustup 工具

在 2024 年 6 月 13 日,Rust 团队又发布 Rust 1.79.0 新版本了,一起来看看该版本到底发生了哪些变化吧。对于喜欢尝新的伙伴,又可以体验到更多的创新和改进了。Sq028资讯网——每日最新资讯28at.com

Sq028资讯网——每日最新资讯28at.com

老规则,如果你渴望尝试最新版本的 Rust,只需通过 rustup 工具即可轻松升级。老规则,如果你渴望尝试最新版本的 Rust,只需通过 rustup 工具即可轻松升级。Sq028资讯网——每日最新资讯28at.com

$ rustup update stable

新的 1.79.0 稳定版中包含了哪些内容呢?Sq028资讯网——每日最新资讯28at.com

尽管 Rust 1.79. 0 版本在规模上相对较小,但它仍然秉承了Rust 团队一贯的风格呀,哈哈!即使是细微的更新也能汇聚成显著的进步。Sq028资讯网——每日最新资讯28at.com

内联 const 表达式

在 Rust 1.79.0 版本中,内联 const 表达式被稳定化,内联 const 表达式允许在表达式位置上使用 const 块,而无需进行额外的声明。Sq028资讯网——每日最新资讯28at.com

这样的常量代码更加简洁和可读,尤其是在泛型上下文中,以前你可能需要先声明一个 const 常量,然后再使用它。然而现在你就能直接在需要的地方使用 const 块来创建常量值。Sq028资讯网——每日最新资讯28at.com

之前的写法:Sq028资讯网——每日最新资讯28at.com

const EMPTY: Option<Vec<u8>> = None;let foo = [EMPTY; 100];

现在可以写成:Sq028资讯网——每日最新资讯28at.com

let foo = [const { None }; 100];

需要注意的是,这对于通用上下文也是如此,以前需要使用关联常量的详细特征声明:Sq028资讯网——每日最新资讯28at.com

fn create_none_array<T, **const** N: usize>() -> [Option<T>; N] {      [**const** { None::<T> }; N]  }

这种改进也适用于泛型上下文,以前需要使用关联常量的详细特征声明,现在可以直接使用内联 const 表达式,无需额外声明,使得代码更加简洁性,还增强表达能力,易于阅读。Sq028资讯网——每日最新资讯28at.com

关联类型位置的 Bound

在 Rust 1.79 稳定中了关联项边界语法,使得能够将边界放在其他边界内的关联类型位置,即  T: Trait<Assoc: Bounds...>。这样就避免了仅为了约束关联类型而提供额外的显式泛型类型的需要。该功能允许在一些以前不可能或对使用施加了额外的、不必要的限制的地方指定界限,譬如:Sq028资讯网——每日最新资讯28at.com

where 子句Sq028资讯网——每日最新资讯28at.com

在这个位置上,相当于将边界分成两个(或多个)where 子句。譬如:Sq028资讯网——每日最新资讯28at.com

where T:Trait<Assoc: Bound>

相当于:Sq028资讯网——每日最新资讯28at.com

where T: Trait, <T as Trait>::Assoc: Bound

更多的可以阅读官网文档获取。Sq028资讯网——每日最新资讯28at.com

延长自动临时寿命延长

Rust 1.79.0 稳定版改进了生命周期处理,使得 match 和 if 表达式中的临时项自动获得更长的生命周期。Sq028资讯网——每日最新资讯28at.com

let a = if true { // 假设这是一个临时值    let temp = create_temp_value();    &temp // 引用临时值} else { // 引用另一个临时值    &create_temp_value() };

再来看 match 的构造:Sq028资讯网——每日最新资讯28at.com

let a = match () { _ => {  ..;  &temp() }}

现在与之前的行为一致:Sq028资讯网——每日最新资讯28at.com

let a = {  ..;  &temp() // lifetime is extended };

此行为是向后兼容的,因为这些程序过去编译失败。Sq028资讯网——每日最新资讯28at.com

当然还有了,还有一些稳定API等等,更多建议多关注官网动态,才能获取一些实时性信息。Sq028资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-96047-0.htmlRust 又发布新的 1.79.0 稳定版本了!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Python 处理 CSV 文件的 12 个高效技巧

下一篇: C++多线程 join 与 detach 分离线程的区别

标签:
  • 热门焦点
Top
Baidu
map