Avatar ·

如何在 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`,但文档对我来说有点复杂。