内容简介:Rust 1.51.0 稳定版正式发布了,此次更新包含 Rust 语言和 Cargo 在相当长一段时间内最重要的新增内容:稳定的 const 泛型 MVP( minimal viable product ,最小可行产品 )版本,并为 Cargo 提供了新的功能解析器...
Rust 1.51.0 稳定版正式发布了,此次更新包含 Rust 语言和 Cargo 在相当长一段时间内最重要的新增内容:稳定的 const 泛型 MVP( minimal viable product ,最小可行产品 )版本,并为 Cargo 提供了新的功能解析器。
const 泛型 MVP 版本
在这个版本之前,Rust 允许类型在生命周期或类型上被参数化,以便在没有运行时开销的情况下编写可重用的代码。然而,无法对这些类型的值进行泛型。这一点在数组中最为明显,因为数组的类型定义中包含了它们的长度 ([T; N])。现在在 1.51.0 中,用户可以写出对任何整数、布尔或 char 类型的值进行泛型的代码(使用 struct 或 enum 值仍然是不稳定的)。
struct Array<T, const LENGTH: usize> { // ^^^^^^^^^^^^^^^^^^^ Const generic definition. list: [T; LENGTH] // ^^^^^^ We use it here. }
array::IntoIter 稳定化
作为稳定 const 泛型的一部分,std::array::IntoIter 允许在任何数组上创建一个按值迭代器。以前没有一个方便的方法来迭代一个数组的自有值,只有对它们的引用。
fn main() { let array = [1, 2, 3, 4, 5]; // Previously for item in array.iter().copied() { println!("{}", item); } // Now for item in std::array::IntoIter::new(array) { println!("{}", item); } }
Cargo 的新功能解析器
该版本的 Cargo.toml 中有一个新的 resolver 选项,可以设置 resolver="2" 来告诉 cargo 使用一种新的方法来解析特性:
- 开发依赖:当一个包作为普通依赖和开发依赖共享时,仅在当前构建包含开发依赖时,才会启用开发依赖功能。
- 主机依赖:当一个包作为普通依赖和构建依赖或 proc-macro 共享时,普通依赖的特性将独立于构建依赖或 proc-macro。
- 目标依赖--当一个包在构建图中出现多次,并且其中一个实例是目标特定的依赖,那么目标特定依赖的特性只有在目标当前正在构建的情况下才会被启用。
[package] resolver = "2" # Or if you're using a workspace [workspace] resolver = "2"
拆分调试信息
在 macOS 上运行 rustc 时设置 -Csplit-debuginfo=unpacked 标志,或者在 Cargo 中设置 split-debuginfo [profile] 选项为 unpacked ,可以加载 debuginfo 而不需要运行 dsymutil,并将 .o 对象文件留在构建输出目录中,而不是删除它们。这可以显著加快包含 debuginfo 的构建速度,并显著减少磁盘空间的使用量。
[profile.dev] split-debuginfo = "unpacked"
稳定的 API
在这个版本中,总共提供了 18 个稳定的新方法,用于各种类型,如 slice 和 Peekable。值得注意的新增方法是 ptr::addr_of!和 ptr::addr_of_mut!,它们允许创建未对齐字段的原始指针。新方法列表如下:
Arc::decrement_strong_count Arc::increment_strong_count Once::call_once_force Peekable::next_if_eq Peekable::next_if Seek::stream_position array::IntoIter panic::panic_any ptr::addr_of! ptr::addr_of_mut! slice::fill_with slice::split_inclusive_mut slice::split_inclusive slice::strip_prefix slice::strip_suffix str::split_inclusive sync::OnceState task::Wake
其它详细更新内容,请查看官方公告。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- NPM包(模块)发布、更新、撤销发布
- 有赞灰度发布与蓝绿发布实践
- 【重磅发布】Linkis 0.10.0 版本发布
- BeetlSQL 3.0.9 发布,Idea 插件发布
- 贝密游戏 0.7.0 发布,发布斗地主
- 【重磅发布】DataSphere Studio 0.9.0 版本发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。