,這是什麼功能的實現:如何從「Box」中獲得自有價值?
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
實際工作的一般不確定性。
注意:在你提出的實現中,你正在泄漏由'Box'分配的內存。 –