我想要一个名为
以下是我想要完成的代码示例:
CatMaker
的结构体,可以创建一个Cat
,但会在内部存储对它的引用,以便稍后调用该Cat
(可能有一个CatMaker.get_child_color(&self)
函数)。我相信这意味着CatMaker
不能比Cat
存在更久(否则它将尝试进行解除引用,而Cat
将不再存在),编译器似乎也同意。以下是我想要完成的代码示例:
pub enum CoatColor {
Black,
Tabby,
}
pub struct Cat {
color: CoatColor,
}
pub struct CatMaker<'a> {
child: Option<&'a Cat>,
}
impl<'a> CatMaker<'a> {
pub fn new() -> CatMaker<'a> {
CatMaker{ child: None }
}
pub fn make_cat(&mut self, color: CoatColor) -> Cat {
let new_cat = Cat{ color: color };
self.child = Some(&new_cat); // commenting out this line will allow it to compile
new_cat
}
}
fn main() {
let mut my_cat_maker = CatMaker::new();
let mut my_cat = my_cat_maker.make_cat(CoatColor::Black);
my_cat.color = CoatColor::Tabby;
}
我在尝试确定如何指定CatMaker.make_cat
中self.child
的生命周期,但遇到了困难。
Cat
)时,对它的引用将不再有效。 - Shepmaster