use std::cell::RefCell;
#[typetag::serde(tag = "type")]
pub trait Component {
fn as_any(&self) -> &dyn std::any::Any;
fn as_any_mut(&mut self) -> &mut dyn std::any::Any;
}
#[typetag::serde(tag = "type")]
pub trait ComponentStorage {
fn as_any(&self) -> &dyn std::any::Any;
fn as_any_mut(&mut self) -> &mut dyn std::any::Any;
}
#[typetag::serde]
impl ComponentStorage for RefCell<Box<dyn Component>> {
fn as_any(&self) -> &dyn std::any::Any {
return self;
}
fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
return self;
}
}