如何在 Rust 中从 `Box<T>` 获取所有权值而不进行复制?
大家好!我开始学习 Rust,在使用智能指针时遇到了问题。我有一个结构体,它没有实现 `Copy` trait(例如,包含 `Vec` 或 `String`)。我把它放入 `Box` 以便在堆上传递,但之后我需要取回原始值,以便在不借用的情况下继续使用它。
这是一个例子:
```rust
struct Data {
numbers: Vec,
}
fn main() {
let boxed = Box::new(Data { numbers: vec![1, 2, 3] });
// 现在如何取回 Data,以便 numbers 转移所有权?
// 想要类似:let data = boxed.into_inner();
// 但没有这个方法!
}
```
我尝试过使用 `*boxed` 进行解引用,但这得到的是引用,而不是所有权。尝试 `let data = *boxed;` —— 编译器说 `Data` 没有实现 `Copy`。我尝试过 unsafe 块,但害怕做错。我看到一些讨论中提到 `Box::into_raw`,但文档对我来说有点复杂。