pub trait ComponentStorage<'a, T: Component>: UnknownComponentStorage + Default {
    type Iter: Iterator<Item = ComponentSlice<'a, T>>;
    type IterMut: Iterator<Item = ComponentSliceMut<'a, T>>;
    fn len(&self) -> usize;
unsafe fn extend_memcopy(
        &mut self,
        archetype: ArchetypeIndex,
        ptr: *const T,
        len: usize
    );
fn get(&'a self, archetype: ArchetypeIndex) -> Option<ComponentSlice<'a, T>>;
unsafe fn get_mut(
        &'a self,
        archetype: ArchetypeIndex
    ) -> Option<ComponentSliceMut<'a, T>>;
fn iter(
        &'a self,
        start_inclusive: usize,
        end_exclusive: usize
    ) -> Self::Iter;
unsafe fn iter_mut(
        &'a self,
        start_inclusive: usize,
        end_exclusive: usize
    ) -> Self::IterMut; fn is_empty(&self) -> bool { ... } }
Expand description

A storage location for component data slices. Each component storage may hold once slice for each archetype inserted into the storage.

Associated Types

An iterator of shared archetype slice references.

An iterator of mutable archetype slice references.

Required methods

Returns the number of archetype slices stored.

Copies new components into the specified archetype slice.

Safety

The components located at ptr are memcopied into the storage. If T is not Copy, then the previous memory location should no longer be accessed.

Gets the component slice for the specified archetype.

Gets a mutable component slice for the specified archetype.

Safety

Ensure that the requested archetype slice is not concurrently borrowed anywhere else such that memory is not mutably aliased.

Iterates through all archetype component slices.

Iterates through all mutable archetype component slices.

Safety

Ensure that all requested archetype slices are not concurrently borrowed anywhere else such that memory is not mutably aliased.

Provided methods

Returns true if the storage contains no archetypes.

Implementors