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());