Rust 1.43.0 发布公告

2020 年 4 月 23 日 · Rust 发布团队

Rust 团队很高兴宣布 Rust 的新版本 1.43.0。Rust 是一种编程语言,它赋予每个人构建可靠高效软件的能力。

如果您之前通过 rustup 安装了 Rust,获取 Rust 1.43.0 非常简单:

$ rustup update stable

如果您还没有,您可以从我们网站上的相应页面 获取 rustup,并查看 GitHub 上的 1.43.0 的详细发布说明

1.43.0 稳定版的新特性

此版本更新较小。没有新的主要功能。我们有一些新的稳定 API、一些编译器性能改进和一个小的宏相关功能。查看 详细的发布说明,了解本文未涵盖的其他更改。

item 片段

在宏中,您可以使用 item 片段将项目插入到特征、实现和 extern 块的正文中。例如

macro_rules! mac_trait {
    ($i:item) => {
        trait T { $i }
    }
}
mac_trait! {
    fn foo() {}
}

这将生成

trait T {
    fn foo() {}
}

围绕基本类型的类型推断

围绕基本类型、引用和二元运算的类型推断得到了改进。代码示例使这更容易理解:此代码在 Rust 1.42 中无法编译,但在 Rust 1.43 中可以编译。

let n: f32 = 0.0 + &0.0;

在 Rust 1.42 中,您将收到一个错误,提示“嘿,我不知道如何将 f64&f64 相加,结果为 f32。”该算法现在正确地确定 0.0&0.0 都应该是 f32

用于测试的新 Cargo 环境变量

为了帮助集成测试,Cargo 将设置一些新的环境变量

这可以通过示例来解释:假设我们正在开发一个名为“cli”的命令行项目。如果我们正在编写集成测试,我们希望调用该 cli 二进制文件并查看它的行为。在运行测试和基准测试时,Cargo 将设置一个名为 CARGO_BIN_EXE_cli 的环境变量,我可以在测试中使用它

let exe = env!("CARGO_BIN_EXE_cli");

这使得调用 cli 变得更容易,因为我们现在可以直接访问它的路径。

库更改

您现在可以直接在浮点数和整数上使用关联常量,而无需导入模块。也就是说,您现在可以编写 u32::MAXf32::NAN,而无需 use std::u32;use std::f32;

有一个 新的 primitive 模块,它重新导出 Rust 的基本类型。当您编写宏并希望确保类型没有被遮蔽时,这很有用。

此外,我们稳定了六个新的 API

其他更改

Rust 1.43.0 版本中还有其他更改:查看 RustCargoClippy 中的更改。

1.43.0 的贡献者

许多人共同创建了 Rust 1.43.0。没有你们,我们无法做到。 谢谢!