最佳答案
这一功能的实现方式是什么:
fn unbox<T>(value: Box<T>) -> T {
// ???
}
文档中唯一与我想要的类似的函数是 Box::into_raw
:
fn unbox<T>(value: Box<T>) -> T {
*value.into_raw()
}
这给出了错误 error[E0133]: dereference of raw pointer requires unsafe function or block
。将其包装在 unsafe { ... }
块中可以修复它。
fn unbox<T>(value: Box<T>) -> T {
unsafe { *value.into_raw() }
}
这是正确的实现吗? 如果是,为什么不安全? 这意味着什么?
也许这个问题显示了我对 Box
实际工作方式的普遍不确定性。