此版本的亮点包括:

Future 特性已稳定
有了这种稳定性,官方表示希望提供重要的 crates、库和生态系统时间来准备 async / .await

alloc crates 已稳定
在 1.36.0 之前,标准库由 std、 core和 proc_macro组成。核心包提供了核心功能,如 Iterator 和Copy ,可以在 #![no_std] 环境中使用,因为它没有强加任何要求。同时, std crate 提供类似 Box<T> 和 OS 功能的类型,但需要全局分配器和其他 OS 功能作为回报。

从 Rust 1.36.0 开始,std 的部分依赖于全局分配器,例如 Vec<T>现在可以在 alloc crate 中使用。

MaybeUninit<T> 代替 mem::uninitialized
在 Rust 的早期版本中,mem::uninitialized 函数允许通过假装已在类型 T 初始化值而不执行任何操作来绕过 Rust 的初始化检查。但是mem::uninitialized 基本上无法正确使用,因为 Rust 编译器假定值已正确初始化。
为了解决这种情况,在 Rust 1.36.0 中, MaybeUninit<T> 类型已经稳定。
并且,由于 MaybeUninit<T> 是更安全的替代方案,从 Rust 1.38 开始,函数 mem::uninitialized将被弃用。
展开
评论