如何将结构体上的属性更改为包含旧值的新值?
struct Container {
more: Box<Container>
}
struct ContainerBox {
container: Option<Container>
}
impl ContainerBox {
pub fn ingest(&mut self, container: Container) {
match &self.container {
Some(container) => {
self.container = Some(Container { more: (*container).clone() }); // this doesn't look right.
},
None => self.container = Some(container)
};
}
}
字符串
这是一个非常愚蠢的例子,但它抓住了重点。我有一个结构体,它拥有一些数据,这些数据可能是一些东西,也可能什么都不是,当它是一些东西时,我需要用一个相同类型的新示例来替换它,该示例由该结构体属性中的旧值组成。
我想我明白为什么借用检查员不高兴,但我也看不到其他的方式来写这个。
1条答案
按热度按时间k5ifujac1#
可以使用
Option::take()
:字符串