use std::any::*;
pub trait IntoAny {
fn into_any(&mut self) -> Box<dyn Any>;
}
pub trait IntoConcrete {
fn into_concrete<AnyT>(&mut self) -> Result<Box<AnyT>, Box<dyn Any>>
where
AnyT: Any;
}
impl<IntoAnyT> IntoConcrete for IntoAnyT
where
IntoAnyT: IntoAny + ?Sized,
{
fn into_concrete<AnyT>(&mut self) -> Result<Box<AnyT>, Box<dyn Any>>
where
AnyT: Any,
{
self.into_any().downcast()
}
}