小编Gue*_*0x0的帖子

在 Rust 中,“退出范围”和“被移动”在重新借用时的表现有何不同?

如果我理解正确的话,在 Rust 中,重借的生命周期必须比它重借的生命周期短:

let mut x = ...;
let m1 = &mut x;
let m2 = &mut *m;
let m3 = m1; // m1 moved here
let m4 = m2; // use m2 here
Run Code Online (Sandbox Code Playgroud)

移动m1m3会触发错误,因为m1是 借用的m2,稍后会使用。

但是,在这种情况下,超出范围的行为有所不同,如下所示:

let mut x = ...;
let m2 : &mut ...;
{
    let m1 = &mut x;
    m2 = &mut *m1;
} // m1 drop out of scope here
let m4 = m2; // use m2 …
Run Code Online (Sandbox Code Playgroud)

rust borrow-checker

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

标签 统计

borrow-checker ×1

rust ×1