您现在的位置是:首页 > 文章详情

Rust 1.83.0 发布

日期:2024-11-29点击:100

Rust 1.83.0 稳定版已正式发布,主要带来以下变化:

新的 const 功能

此版本对在 const contexts 中运行的代码的功能进行了多项重大扩展。指的是编译器在编译时必须评估的所有代码:conststatic项的初始值、数组长度、枚举判别值、const 泛型参数以及可从此类上下文调用的函数(const fn)。

statics 的引用。 到目前为止,除了static项的初始化表达式之外,const contexts 都禁止引用static项。此限制现已取消:

 static S: i32 = 25; const C: &i32 = &S; 

值得注意的是,在 const contexts 中仍然不允许读取可变或内部可变静态的值。此外,常量的最终值不得引用任何可变或内部可变静态:

 static mut S: i32 = 0; const C1: i32 = unsafe { S }; // error: constant accesses mutable global memory const C2: &i32 = unsafe { &S }; // error: encountered reference to mutable memory in `const` 

这些限制确保 constants 仍然是“constant”:它们的求值及以及它们作为模式的含义(可能涉及取消引用引用)在整个程序执行过程中将是相同的。

尽管如此,还是允许常量求值到指向可变静态或内部可变静态的原始指针:

 static mut S: i32 = 64; const C: *mut i32 = &raw mut S; 

可变引用和指针。 现在可以在 const contexts 中使用可变引用:

 const fn inc(x: &mut i32) { *x += 1; } const C: i32 = { let mut c = 41; inc(&mut c); c }; 

还支持可变原始指针和内部可变性:

 use std::cell::UnsafeCell; const C: i32 = { let c = UnsafeCell::new(41); unsafe { *c.get() += 1 }; c.into_inner() }; 

但是,可变引用和指针只能在常量的计算使用,它们不能成为常量最终值的一部分:

 const C: &mut i32 = &mut 4; // error[E0764]: mutable references are not allowed in the final value of constants 

此版本还附带了一整套新功能,这些函数现在在 const contexts 中很稳定。

详情可查看官方公告:https://blog.rust-lang.org/2024/11/28/Rust-1.83.0.html

原文链接:https://www.oschina.net/news/322560/rust-1-83-0-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章