铁锈可变借贷似乎活得太久

时间:2019-05-25 21:08:30

标签: rust lifetime

我无法理解为什么以下代码被拒绝:

normal o

Playground link)。

我的理解是,使用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的调用包装在其自己的块中,以使生命周期更加明确,但这不会改变错误。

0 个答案:

没有答案