小编Dan*_*ger的帖子

为什么 Rust 允许 2 个同时可变引用?

锈书

“对于特定范围内的特定数据,您只能有一个可变引用”

据我所知,以下工作代码通过同时具有 2 个可变引用与此相矛盾:

fn main() {
    let mut s = String::from("hello");

    let r1 = &mut s;
    let r2 = &mut s;
}
Run Code Online (Sandbox Code Playgroud)

代码只是对本书中的这个例子稍作修改:

fn main() {
    let mut s = String::from("hello");

    {
        let r1 = &mut s;
    } // r1 goes out of scope here, so we can make a new reference with no problems.

    let r2 = &mut s;
}
Run Code Online (Sandbox Code Playgroud)

这本书暗示只能进行第二个可变引用,因为第一个超出范围,但是当我修改代码以使第一个引用不会超出范围时,它仍然可以编译。为什么这是允许的?我认为 Rust 一次只能允许 1 个可变引用。

rust borrow-checker

0
推荐指数
1
解决办法
82
查看次数

标签 统计

borrow-checker ×1

rust ×1