我有一个类型的值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)
也可以看看: