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

Rust 1.57.0 发布

日期:2021-12-02点击:533

​Rust 1.57.0 现已发布,该版本为 const contexts 带来了 panic!,为 Cargo 增加了对自定义配置文件的支持,并稳定了易出错的 reservation API。如果你此前已通过 rustup 安装了以前的 Rust 版本,运行以下命令即可升级至最新版本:

 rustup update stable

具体更新内容包括: 

panic! in const contexts

在以前的 Rust 版本中,panic!macro 在 const fn 和其他 compile-time contexts 中是不能使用的。现在,这一点已经稳定下来了。连同panic!的稳定,其他几个标准库的 API 现在也可以在 const 中使用,比如assert!

这种稳定性还不包括完整的格式化基础结构,因此必须使用静态字符串 (panic!("..."))或者用单个&str内插值 (panic!("{}", a)) 来调用panic!macro 宏。

预计将来这种支持会扩展,但这种最低限度的稳定性已经支持直接的编译时断言,例如验证类型的大小

 const _: () = assert!(std::mem::size_of::<u64>() == 8); const _: () = assert!(std::mem::size_of::<u8>() == 1); 

Cargo support for custom profiles

Cargo 长期以来一直支持四种配置文件:devreleasetestbench。在 Rust 1.57 中,增加了对任意命名的配置文件的支持。

例如,如果你想只在最终生产构建时启用链接时间优化(LTO),那么在 Cargo.toml 中添加以下片段,在选择此配置文件时启用 lto flag,但避免在常规发布构建时启用它。

 [profile.production] inherits = "release" lto = true 

Fallible allocation

Rust 1.57 为VecStringHashMapHashSetVecDeque稳定了try_reserve。此 API 使调用者能够错误地为这些类型分配 backing storage。

如果全局分配器失败,Rust 通常会中止进程,这并不总是可取的。此 API 提供了一种在使用标准库集合时避免中止的方法。但是,Rust 不保证返回的内存实际上是由内核分配的:例如,如果在 Linux 上启用了 overcommit,则在尝试使用内存时可能无法使用该内存。

稳定的 API

以下方法和特性的实现被稳定化:

以下以前稳定的功能现在是const

更多详情可查看官方博客

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

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

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

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

文章评论

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

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章