Rust 1.62.0 稳定版现已发布,具体更新内容如下:
cargo add
现在可以使用cargo add
直接从命令行添加新的依赖项。该命令支持指定功能和版本。它也可以用来修改现有的依赖项。
例如:
cargo add log
cargo add serde --features derive
cargo add nom@5
有关更多信息,可参阅 cargo 文件。
#[default]
enum variants
如果你指定了一个默认变量,那你现在可以在枚举上使用#[derive(Default)]
。例如,到目前为止,你必须手动为此枚举编写一个 Default
impl:
#[derive(Default)]
enum Maybe<T> {
#[default]
Nothing,
Something(T),
}
到目前为止,只有"unit" 变量(没有字段的变体)才允许被标记为#[default]
。更多信息可在该特性的 RFC 中找到。
Thinner, faster mutexes on Linux
以前,Mutex
、Condvar
和RwLock
由 Linux 上的 pthreads 库支持。pthreads 锁支持比 Rust API 本身更多的功能,包括运行时配置,并且被设计用于比 Rust 提供的 static guarantees 更少的语言中。例如,mutex 的实现是 40 字节,不能移动。这迫使标准库在幕后为使用 pthreads 的平台的每个新的 mutex 分配一个 Box。
公告指出,Rust 的标准库现在在 Linux 上提供了这些锁的基于 futex 的原始实现,它非常轻量级并且不需要额外的分配。在 1.62.0 中,Mutex
在 Linux 上的内部状态只需要 5 个字节,尽管这在未来的版本中可能会改变。
这是提高 Rust 的 lock types 效率的长期努力的一部分,其中包括以前对 Windows 的改进,例如 unboxing 其 primitives。可以在 tracking issue 中阅读有关该工作的更多信息。
Bare metal x86_64 targ
现在为x86_64
构建无操作系统的二进制文件更加容易,例如在编写内核时。x86_64-unknown-none
target 已提升到 Tier 2,可以使用 rustup 安装。
rustup target add x86_64-unknown-none
rustc --target x86_64-unknown-none my_no_std_program.rs
可以在 Embedded Rust book 中阅读有关使用no_std
开发的更多信息。
稳定的 API
bool::then_some
f32::total_cmp
f64::total_cmp
Stdin::lines
windows::CommandExt::raw_arg
impl<T: Default> Default for AssertUnwindSafe<T>
From<Rc<str>> for Rc<[u8]>
From<Arc<str>> for Arc<[u8]>
FusedIterator for EncodeWide
- RDM intrinsics on aarch64
更多详情可查看官方公告。