use core::clone::CloneToUninit;
use crate::any::AsAny;
pub trait AttributeValue: AsAny + CloneToUninit {}
impl<T: AsAny + CloneToUninit> AttributeValue for T {}
impl dyn AttributeValue {
pub fn is<T: AsAny>(&self) -> bool {
self.as_any().is::<T>()
}
pub fn downcast_ref<T: AsAny>(&self) -> Option<&T> {
self.as_any().downcast_ref::<T>()
}
pub fn downcast_mut<T: AsAny>(&mut self) -> Option<&mut T> {
self.as_any_mut().downcast_mut::<T>()
}
}