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::MAX
或 f32::NAN
,而无需 use std::u32;
或 use std::f32;
。
有一个 新的 primitive
模块,它重新导出 Rust 的基本类型。当您编写宏并希望确保类型没有被遮蔽时,这很有用。
此外,我们稳定了六个新的 API
其他更改
Rust 1.43.0 版本中还有其他更改:查看 Rust、Cargo 和 Clippy 中的更改。
1.43.0 的贡献者
许多人共同创建了 Rust 1.43.0。没有你们,我们无法做到。 谢谢!