use super::{Component, ComponentStorage, Entity, EntityId, EntityStorage};
use crate::collections::{GenIndexArena, GenIndexBTreeMap, GenIndexSparseSet, GenIndexVecMap};
pub type ArenaStorage<E> = GenIndexArena<E, EntityId<E>>;
impl<E: Entity + 'static> EntityStorage<E> for ArenaStorage<E> {}
pub type SparseSetStorage<E, C> = GenIndexSparseSet<C, EntityId<E>>;
impl<E: Entity + 'static, C: Component<E> + 'static> ComponentStorage<E, C>
for SparseSetStorage<E, C>
{
}
pub type VecStorage<E, C> = GenIndexVecMap<C, EntityId<E>>;
impl<E: Entity + 'static, C: Component<E> + 'static> ComponentStorage<E, C> for VecStorage<E, C> {}
pub type BTreeStorage<E, C> = GenIndexBTreeMap<C, EntityId<E>>;
impl<E: Entity + 'static, C: Component<E> + 'static> ComponentStorage<E, C> for BTreeStorage<E, C> {}
#[cfg(feature = "std")]
pub type HashMapStorage<E, C> = crate::collections::GenIndexHashMap<C, EntityId<E>>;
#[cfg(feature = "std")]
impl<E: Entity + 'static, C: Component<E> + 'static> ComponentStorage<E, C>
for HashMapStorage<E, C>
{
}