我无法理解为什么以下代码被拒绝:
normal o
我的理解是,使用NLL,在调用o
时引入的对pub struct MyStruct<'a> {
pub parent: Option<&'a mut MyStruct<'a>>,
}
impl<'a> MyStruct<'a> {
pub fn new() -> Self {
MyStruct { parent: None }
}
}
fn main() {
fn inner<'a>(_: &'a mut MyStruct<'a>) {}
let mut i = MyStruct::new();
inner(&mut i);
assert!(i.parent.is_none());
}
的可变借用将在该行之后删除,并且i
应该可以安全地再次借入最后一行。但是,编译此代码时出现以下错误:
inner
为什么Rust认为我在第18行使用可变借款?那为什么它还活着呢?
我尝试将对i
的调用包装在其自己的块中,以使生命周期更加明确,但这不会改变错误。