宣布 Rust 1.26.2

2018 年 6 月 5 日 · Rust 核心团队

Rust 团队很高兴宣布 Rust 的新版本 1.26.2。Rust 是一门专注于安全性、速度和并发性的系统编程语言。

如果你之前已经通过 rustup 安装了 Rust,获取 Rust 1.26.2 非常简单,只需执行

$ rustup update stable

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

1.26.2 稳定版有什么新内容

此补丁版本修复了借用检查器在验证 match 表达式时的一个错误。这个错误是在 1.26.0 版本中随match ergonomics 的稳定而引入的。具体来说,它允许代码同时对 bar 路径进行两次可变借用。

let mut foo = Some("foo".to_string());
let bar = &mut foo;
match bar {
    Some(baz) => {
        bar.take(); // Should not be permitted, as baz has a unique reference to the bar pointer.
    },
    None => unreachable!(),
}

1.26.2 将拒绝上述代码并给出此错误消息

error[E0499]: cannot borrow `*bar` as mutable more than once at a time
 --> src/main.rs:6:9
  |
5 |     Some(baz) => {
  |          --- first mutable borrow occurs here
6 |         bar.take(); // Should not be permitted, as baz has a ...
  |         ^^^ second mutable borrow occurs here
...
9 | }
  | - first borrow ends here

error: aborting due to previous error

核心团队决定发布一个点版本,以尽量缩短 Rust 编译器中的此错误存在于稳定版编译器中的时间窗口。