Wie erhalte ich den besitzenden Wert aus `Box<T>` in Rust ohne Kopieren?
Hallo zusammen! Ich habe angefangen, Rust zu lernen, und bin auf ein Problem bei der Arbeit mit Smart Pointern gestoßen. Ich habe eine Struktur, die das `Copy`-Trait nicht implementiert (z.B. enthält sie `Vec` oder `String`). Ich lege sie in eine `Box`, um sie auf dem Heap zu übergeben, aber später muss ich den ursprünglichen Wert wieder extrahieren, um ohne Borrowing weiter damit zu arbeiten.
Hier ist ein Beispiel:
```rust
struct Data {
numbers: Vec,
}
fn main() {
let boxed = Box::new(Data { numbers: vec![1, 2, 3] });
// Wie bekomme ich jetzt Data zurück, sodass numbers in den Besitz übergeht?
// Ich möchte so etwas wie: let data = boxed.into_inner();
// Aber diese Methode gibt es nicht!
}
```
Ich habe versucht, `*boxed` zum Dereferenzieren zu verwenden, aber das gibt eine Referenz, keinen Besitz. Ich habe versucht, `let data = *boxed;` zu schreiben — der Compiler
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs