我有一个类型的值T中value: Box<dyn Any>,并希望将其解压。我找到的唯一方法是:
let pv = value.downcast_mut::<T>();
let v = std::mem::replace(pv, T::default());
Run Code Online (Sandbox Code Playgroud)
有v没有不需要T实现的方法Default?
tre*_*tcl 10
Box有它自己的downcast返回一个Result<Box<T>, Box<dyn Any>>. 一旦你有了一个,Box<T>你可以简单地取消引用它来T取出。这是使用它的一种方法:
fn get<T: Any>(value: Box<dyn Any>) -> T {
let pv = value.downcast().expect("The pointed-to value must be of type T");
*pv
}
Run Code Online (Sandbox Code Playgroud)
也可以看看:
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |