我有2層結構:將成員的所有權從一個結構移到另一個結構?
struct MyVector {
storage: Vec<u32>,
}
struct MyVectorBuilder {
storage: Vec<u32>,
}
impl MyVectorBuilder {
fn new() -> MyVectorBuilder {
MyVectorBuilder { storage: Vec::new() }
}
fn build_my_vector(&mut self) -> MyVector {
// Doesn't compile: ^^^^ cannot move out of borrowed content
MyVector { storage: self.storage }
}
}
有沒有辦法告訴編譯器MyVectorBuilder
不會對如下這樣build_my_vector()
調用它會讓我移動到storage
MyVector
使用嗎?
注意:您可能想更好地熟悉Rust命名約定,方法應該是'snake_case'而不是'PascalCase'。 –
@MatthieuM。謝謝,舊習慣 – Shmoopy
不用擔心,編譯器會一直提醒你,直到你遵守:) –