相关疑难解决方法(0)

如何从"Box"中获取自有值?

这个函数的实现是什么:

fn unbox<T>(value: Box<T>) -> T {
    // ???
}
Run Code Online (Sandbox Code Playgroud)

文档中唯一看起来像我想要的功能Box::into_raw.以下将进行类型检查:

fn unbox<T>(value: Box<T>) -> T {
    *value.into_raw()
}
Run Code Online (Sandbox Code Playgroud)

这给出了错误error[E0133]: dereference of raw pointer requires unsafe function or block.将其包装在一个unsafe { ... }块中可以修复它.

fn unbox<T>(value: Box<T>) -> T {
    unsafe { *value.into_raw() }
}
Run Code Online (Sandbox Code Playgroud)

这是正确的实施吗?如果是这样,为什么它不安全?这是什么意思?

也许这个问题显示了我对如何Box实际工作的一般不确定性.

unsafe rust

20
推荐指数
1
解决办法
1万
查看次数

标签 统计

rust ×1

unsafe ×1