Rust 当创建引用self的新值时,如何修复错误“self”的有效期不够长?

Rust 当创建引用self的新值时,如何修复错误“self”的有效期不够长?,rust,Rust,我在Rust工作,我在让所有权制度为我工作方面遇到了一些困难。当父项创建子项时,我想给子项一个对其父项的引用。下面是我尝试使用的代码: struct Child<'a> { parent: &'a Parent, } impl<'a> Child<'a> { fn new(parent: &Parent) -> Child { Child { parent: &parent } } } s

我在Rust工作,我在让所有权制度为我工作方面遇到了一些困难。当
父项
创建
子项
时,我想给
子项
一个对其
父项
的引用。下面是我尝试使用的代码:

struct Child<'a> {
    parent: &'a Parent,
}
impl<'a> Child<'a> {
    fn new(parent: &Parent) -> Child {
        Child { parent: &parent }
    }
}

struct Parent {
    child_count: u32,
}
impl Parent {
    fn new() -> Parent {
        Parent { child_count: 0 }
    }
    fn makeChild(&mut self) -> Child {
        self.child_count += 1;
        Child::new(&self)
    }
}

fn main() {
    let mut parent = Parent::new();
    let child = parent.makeChild();
}

self
已经是一个引用,因为您将函数的参数声明为
&mut self
,因此不需要引用它–只需直接使用
self

impl Parent {
    fn new() -> Parent {
        Parent { child_count: 0 }
    }
    fn makeChild(&mut self) -> Child {
        self.child_count += 1;
        Child::new(self)
    }
}

self
已经是一个引用,因为您将函数的参数声明为
&mut self
,因此不需要引用它–只需直接使用
self

impl Parent {
    fn new() -> Parent {
        Parent { child_count: 0 }
    }
    fn makeChild(&mut self) -> Child {
        self.child_count += 1;
        Child::new(self)
    }
}

请注意,变量和方法的锈蚀样式是
snake\u case
,而不是
camelCase
。是的,您是正确的。但是下面的答案再次使用了它,所以我将其保留在这里,以便保持一致。请注意,变量和方法的生锈样式是
snake\u case
,而不是
camelCase
。是的,您是正确的。但是下面的答案再次使用了它,所以我把它放在这里,这样它是一致的。尽管这只是冰山一角。有了OP的密码,他就不会有第二个孩子了。。。(同时)这只是冰山一角。有了OP的密码,他就不会有第二个孩子了。。。(同时)。