pub use qmi_macro::Component;
use std::{any::Any, collections::HashMap, mem::Discriminant};
trait Component: 'static {
fn name(&self) -> &'static str;
fn as_any(&self) -> &dyn Any;
fn as_any_mut(&mut self) -> &mut dyn Any;
}
struct ComponentVec<T> {
sparse_links: HashMap<EntityID, usize>,
components: Vec<T>,
}
struct EntityID {
id: u32,
generation: u32,
}
struct World {
storages: HashMap<&'static str, Box<dyn Any>>,
}