Was ist die Implementierung für diese Funktion:Wie bekomme ich einen eigenen Wert aus einer `Box`?
fn unbox<T>(value: Box<T>) -> T {
// ???
}
Die einzige Funktion in der Dokumentation, die wie das, was aussieht ich will, ist Box::into_raw
. Der folgende Typ wird überprüft:
fn unbox<T>(value: Box<T>) -> T {
*value.into_raw()
}
Dies gibt den Fehler error[E0133]: dereference of raw pointer requires unsafe function or block
. Wrapping es in einem unsafe { ... }
Block behebt es.
fn unbox<T>(value: Box<T>) -> T {
unsafe { *value.into_raw() }
}
Ist dies die richtige Implementierung? Wenn ja, warum ist es unsicher? Was heißt das?
Vielleicht zeigt diese Frage meine allgemeine Unsicherheit, wie Box
s tatsächlich funktionieren.
Hinweis: In der von Ihnen vorgeschlagenen Implementierung wird der von 'Box' zugewiesene Speicher gelöscht. –