qmi 0.0.8

A variant of ECS where topology matters and makes us happy.
Documentation
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>>,
}