【发布时间】:2018-02-25 11:28:50
【问题描述】:
我想将一个结构的字段的值移动到另一个结构,如下所示:
struct MyStruct {
value1: Option<Vec<usize>>,
value2: i32,
// ...,
}
impl MyStruct {
pub fn child(&mut self, value2: i32) -> MyStruct {
let mut value1 = self.value1.unwrap();
// Do some stuff..
MyStruct {
value1: Some(value1),
value2: value2,
}
}
}
fn main() {
let mut first = MyStruct {
// Building the first structure
value1: Some((0..10).map(|_| 0).collect()),
value2: 0,
};
// Using it
let second = first.child(1);
}
我收到一个错误:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:9:26
|
9 | let mut value1 = self.value1.unwrap();
| ^^^^ cannot move out of borrowed content
我如何告诉 Rust 将 value1 从第一个实例移动到第二个实例,让第一个实例的 value1 等于 None?
稍后在我的代码中,我可能需要返回到我使用的所有实例,读取其他值但不读取向量。
我曾经做过一个字段的副本,但由于我正在探索一个非常巨大的图表,内存无法承受它并且效率不高。
【问题讨论】:
标签: rust