12月2日,Rust官方博客发文称Rust 1.57.0正式发布。
开发者如果想要使用最新版本的Rust,方法也很简单:若是已经通过rustup安装了以前版本的Rust,那么只需要通过以下代码进行更新:rustup update stable。若是没有安装过,那么就可以查看这个文档进行安装。
Rust 1.57.0更新内容:
在以前的Rust版本中,panic!宏在const fn和其他编译时上下文中是不可用的。现在,这一点已经稳定下来了。连同panic!的稳定,其他几个标准库的API现在也可以在const中使用,比如assert!。
这个稳定化还不包括完整的格式化基础设施,所以必须用静态字符串(panic!("..."))或者用单一的&str插值(panic!("{}", a))来调用panic!宏,它必须与{}一起使用(没有格式指定器或其他特征)。
未来这种支持可能会扩大,但现在其实也已经可以实现直接的编译时断言,例如验证一个类型的大小。
const _: () = assert! (std::mem::size_of::() == 8)。
const _: () = assert!(std::mem::size_of::() ==1)。
Cargo对自定义配置文件的支持
Cargo长期以来一直支持四个配置文件:dev、release、test和bench。在Rust 1.57中,增加了对任意命名配置文件的支持。
例如,如果你想只在最终生产构建时启用 link time optimizations (LTO),那么在Cargo.toml中添加以下片段,在选择此配置文件时启用lto标志,但要注意不能在常规发布构建时启用它。
[profile.production]
inherits = "release"
lto = true
请注意,自定义配置文件必须指定一个配置文件,它们从该配置文件继承默认设置。一旦定义了配置文件,构建代码的Cargo命令就可以用--profile production来要求使用它。目前,这将在一个单独的目录(本例中为target/production)中构建工件,这意味着工件不会在目录之间共享。
Fallible allocation
Rust 1.57为Vec、String、HashMap、HashSet和VecDeque稳定了try_reserve。这个API使调用者能够错误地分配这些类型的支持存储。
如果全局分配器失败,Rust通常会中止这个过程,这并不总是可取的。这个API提供了一种方法,可以在使用标准库集合时避免这种中止。然而,Rust并不保证返回的内存实际上是由内核分配的:例如,如果在Linux上启用了超额提交(overcommit),当试图使用时,内存可能并不可用。
目前稳定的API
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!