Rust “*(&;&x27;一个mut self)`方法中的生存期参数是否会混淆检查程序?

Rust “*(&;&x27;一个mut self)`方法中的生存期参数是否会混淆检查程序?,rust,Rust,只要在和'a mut self中使用'a,以下示例就不会编译: struct Foo<'a> { a: &'a u64, } impl<'a> Foo<'a> { fn mutate_internal(&'a mut self) {} fn mutate(&'a mut self) { self.mutate_internal(); self.mutate_internal()

只要在
和'a mut self
中使用
'a
,以下示例就不会编译:

struct Foo<'a> {
    a: &'a u64,
}

impl<'a> Foo<'a> {
    fn mutate_internal(&'a mut self) {}

    fn mutate(&'a mut self) {
        self.mutate_internal();
        self.mutate_internal(); // <- This call fails the borrow-check
    }
}
你能解释一下原因吗?请注意,如果
&a mut self
变成
&mut self
,问题就会消失


如果在
mutate\u internal
中删除
'a
命名的生存期,则得到的是一个新的(匿名)生存期参数,而不是
'a
。也就是说,你得到的东西相当于:

fn mutate_internal<'b>(&'b mut self) {}
fn变异\u内部
✗ rustc --version
rustc 1.0.0-nightly (e2fa53e59 2015-03-20) (built 2015-03-20)
fn mutate_internal<'b>(&'b mut self) {}