Rust 当创建引用self的新值时,如何修复错误“self”的有效期不够长?
我在Rust工作,我在让所有权制度为我工作方面遇到了一些困难。当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
父项
创建子项
时,我想给子项
一个对其父项
的引用。下面是我尝试使用的代码:
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的密码,他就不会有第二个孩子了。。。(同时)。