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
答案 0 :(得分:3)
您可以在self.attraction
上使用该功能,同时可变地借用self
;按照其文档中的第一行:
消费
Box
您需要.clone()
或使用消耗self
的功能(例如fn open(self)
)。