pub struct Themepark {
attraction: Box<Attraction>
}
注意:Attraction
是一个特质!
impl Themepark {
pub fn open(&mut self) -> Result<(), ()> {
let attraction = Box::into_raw(self.attraction);
...
}
}
这给了我
> cannot move out of borrowed content
在self.attraction
内的Box::into_raw
现在我明白了那个特定的错误信息意味着什么,但我不明白如何解决它,因为Box::into_raw
期望Box<T>
作为参数,而不是参考或任何东西。
https://doc.rust-lang.org/std/boxed/struct.Box.html#method.into_raw
你可能无法在self.attraction
上使用该功能,同时可靠地借用self
;按照其文档中的第一行:
消耗
Box
你要么需要.clone()
它,要么使用消耗self
的函数(例如fn open(self)
)。