Function better_any::nightly::downcast_any
source · [−]pub fn downcast_any<From: IntoRawPtr, To: IntoRawPtr<Lifetime = From::Lifetime>>(
f: From
) -> Result<To, From>where
From::Pointee: Pointee + DynMetadataType,
To::Pointee: Sized,
*const To::Pointee: CoerceUnsized<*const From::Pointee>,
<From::Pointee as DynMetadataType>::Over: Any,
Expand description
Downcasts any kind of fat pointer type which vtable corresponds to a trait with Any
bound.
For example Rc<RefCell<dyn Any>>>
can be downcasted with this method
let a = 5i32;
let any = &a as &dyn Any;
let result: &i32 = downcast_any(any).unwrap();
assert_eq!(a, *result);
assert!(downcast_any::<_, &usize>(any).is_err());