Что является реализация этой функции:Как получить принадлежащую стоимость из `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'. –