Rust 团队很高兴地宣布 Rust 的新版本 1.27.1。 Rust 是一种专注于安全性、速度和并发性的系统编程语言。
如果您之前通过 rustup 安装了 Rust 版本,那么获取 Rust 1.27.1 非常简单,只需运行:
$ rustup update stable
如果您还没有安装 rustup,您可以从我们网站上的相应页面获取 rustup
,并查看 GitHub 上 1.27.1 的详细发行说明。
1.27.1 稳定版中的内容
此补丁版本修复了 match
表达式的借用检查器验证中的一个错误。此错误是在 1.26.0 版本中引入的,当时 match 人体工程学稳定化。我们不确定这个特定问题是否真的表明了借用检查器中的不健全性,但怀疑这可能是一种可能性,因此决定发布一个点版本。在应用此补丁之前,下面的代码示例会导致编译器内部发生 panic。
fn main() {
let a = vec!["".to_string()];
a.iter().enumerate()
.take_while(|(_, &t)| false)
.collect::<Vec<_>>();
}
1.27.1 将拒绝上述代码,并显示以下错误消息:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:4:30
|
4 | .take_while(|(_, &t)| false)
| ^-
| ||
| |hint: to prevent move, use `ref t` or `ref mut t`
| cannot move out of borrowed content
error: aborting due to previous error
除了 match 人体工程学修复之外,还在 rustdoc(Rust 项目的标准文档生成器)中发现了一个安全漏洞。此漏洞通过删除 rustdoc 插件的默认搜索路径来解决。此功能将在 Rust 1.28.0 中完全删除。此插件基础结构早于 Rust 1.0,并且从未在稳定版上可用,并且在 nightly 版本上已经无法使用许多个月。预计将在下一个版本中听到有关删除的更多信息:当前补丁删除了默认搜索路径(相反,用户必须显式指定它),而下一个版本将完全删除该功能。