“ Rust 1.77.0 发布 ”
Rust 1.77.0 稳定版已正式发布,主要带来以下变化
C-string literals
Rust 现在支持 C-string literals(c”abc”),它在&‘static CStr类型的内存中扩展为以 nul 字节结束的字符串。这使得编写与需要以 nul 结尾的字符串的外语接口互操作的代码变得更加容易,并且在编译时执行所有相关的错误检查例如,缺少内部 nul 字节。
Support for recursion in async fn
由于编译器限制,异步函数以前无法调用自身。在 1.77 中,该限制已被取消因此只要使用某种间接形式来避免函数状态的无限大,就允许递归调用。 这意味着这样的代码现在可以工作
async fn fib(n: u32) -> u32 {
match n {
0 | 1 => 1,
_ => Box::pin(fib(n-1)).await + Box::pin(fib(n-2)).await
}
}
offset_of!
1.77.0 稳定了struct fields 的offset_of!,它提供了对 struct 相关公共字段的字节偏移量的访问。这个宏在需要字段偏移量而又没有类型实例的情况下非常有用。用户现在可以使用offset_of!(StructName, field)访问公共字段的偏移量。
默认情况下在发布配置文件中启用strip
未在 outputs 中启用debuginfo 的Cargo profiles例如debug = 0将默认启用strip = “debuginfo”。 之所以需要这样做,主要是因为预编译标准库附带有 debuginfo,这意味着即使本地编译没有明确请求 debuginfo,静态链接的结果也会包含标准库中的 debuginfo。
稳定的 API
- array::each_ref
- array::each_mut
- core::net
- f32::round_ties_even
- f64::round_ties_even
- mem::offset_of!
- slice::first_chunk
- slice::first_chunk_mut
- slice::split_first_chunk
- slice::split_first_chunk_mut
- slice::last_chunk
- slice::last_chunk_mut
- slice::split_last_chunk
- slice::split_last_chunk_mut
- slice::chunk_by
- slice::chunk_by_mut
- Bound::map
- File::create_new
- Mutex::clear_poison
- RwLock::clear_poison Other changes 可查看Rust、Cargo和Clippy中发生的所有变化。 详情可查看官方公告。
每日一言
""倘若互不相欠,怎会再次相见。""