qmi 0.1.5

An ECS with too much macro usage
Documentation
#[macro_export]
macro_rules! serialize_filtered_pool {
    ($storage:expr, $t:ty) => {{
        if let Some(pool) = $storage.as_any().downcast_ref::<ComponentPool<$t>>() {
            let mut transient_pool = ComponentPool::<$t> {
                dense_data: Vec::new(),
                dense_entities: Vec::new(),
                sparse_map: PageMap::new(),
                persistence_flags: Vec::new(),
            };
            for (idx, &is_persistent) in pool.persistence_flags.iter().enumerate() {
                if is_persistent {
                    let entity = pool.dense_entities[idx];
                    let new_idx = transient_pool.dense_data.len();
                    transient_pool.dense_data.push(pool.dense_data[idx].clone());
                    transient_pool.dense_entities.push(entity);
                    transient_pool.sparse_map.insert(entity.0 as usize, new_idx);
                }
            }
            Some(postcard::to_allocvec(&(
                &transient_pool.sparse_map,
                &transient_pool.dense_entities,
                &transient_pool.dense_data,
            )))
        } else {
            None
        }
    }};
}