Rust-为什么两次借入&mut都不会给我错误

问题描述 投票:0回答:1

我正在检查此防锈文档https://doc.rust-lang.org/1.30.0/book/2018-edition/ch04-02-references-and-borrowing.html

当我两次借用&mut时,我不会看到任何错误(请参见下面的代码),有人可以告诉我为什么吗?

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

let r1 = &mut s;
let r2 = &mut s;
rust reference mutable borrow
1个回答
0
投票

这是由于non-lexical lifetimes。编译器认识到,由于从不使用第一个引用,因此可以简单地将其删除,从而允许创建第二个引用。

如果强制我们延长第一个引用的生存期,我们可以看到编译器仍在执行常规检查,如下所示:

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

let r1 = &mut s;
let r2 = &mut s;

drop(r1);
© www.soinside.com 2019 - 2024. All rights reserved.