use std::any::Any;
pub trait AsAnyRef
{
fn as_any_ref(&self) -> &dyn Any;
}
#[macro_export]
macro_rules! impl_as_any_ref
{
($for_type:ty) =>
{
impl AsAnyRef for $for_type
{
fn as_any_ref(&self) -> &dyn Any
{
self
}
}
};
}
#[macro_export]
macro_rules! impl_as_any_ref_method
{
() =>
{
fn as_any_ref(&self) -> &dyn Any
{
self
}
}
}
pub trait AsAnyMut
{
fn as_any_mut(&self) -> &mut dyn Any;
}
#[macro_export]
macro_rules! impl_as_any_mut
{
($for_type:ty) =>
{
impl AsAnyMut for $for_type
{
fn as_any_mut(&self) -> &dyn Any
{
self
}
}
};
}
#[macro_export]
macro_rules! impl_as_any_mut_method
{
() =>
{
fn as_any_mut(&self) -> &mut dyn Any
{
self
}
}
}