Trait oxygengine::core::ecs::storage::UnprotectedStorage[]

pub trait UnprotectedStorage<T>: TryDefault {
    pub unsafe fn clean<B>(&mut self, has: B)
    where
        B: BitSetLike
;
pub unsafe fn get(&self, id: u32) -> &T;
pub unsafe fn get_mut(&mut self, id: u32) -> &mut T;
pub unsafe fn insert(&mut self, id: u32, value: T);
pub unsafe fn remove(&mut self, id: u32) -> T; pub unsafe fn drop(&mut self, id: u32) { ... } }

Used by the framework to quickly join components.

Required methods

pub unsafe fn clean<B>(&mut self, has: B) where
    B: BitSetLike

Clean the storage given a bitset with bits set for valid indices. Allows us to safely drop the storage.

Safety

May only be called with the mask which keeps track of the elements existing in this storage.

pub unsafe fn get(&self, id: u32) -> &T

Tries reading the data associated with an Index. This is unsafe because the external set used to protect this storage is absent.

Safety

May only be called after a call to insert with id and no following call to remove with id.

A mask should keep track of those states, and an id being contained in the tracking mask is sufficient to call this method.

pub unsafe fn get_mut(&mut self, id: u32) -> &mut T

Tries mutating the data associated with an Index. This is unsafe because the external set used to protect this storage is absent.

Safety

May only be called after a call to insert with id and no following call to remove with id.

A mask should keep track of those states, and an id being contained in the tracking mask is sufficient to call this method.

pub unsafe fn insert(&mut self, id: u32, value: T)

Inserts new data for a given Index.

Safety

May only be called if insert was not called with id before, or was reverted by a call to remove with `id.

A mask should keep track of those states, and an id missing from the mask is sufficient to call insert.

pub unsafe fn remove(&mut self, id: u32) -> T

Removes the data associated with an Index.

Safety

May only be called if an element with id was inserted and not yet removed / dropped.

Loading content...

Provided methods

pub unsafe fn drop(&mut self, id: u32)

Drops the data associated with an Index. This is simply more efficient than remove and can be used if the data is no longer needed.

Safety

May only be called if an element with id was inserted and not yet removed / dropped.

Loading content...

Implementors

impl<C, T> UnprotectedStorage<C> for FlaggedStorage<C, T> where
    C: Component,
    T: UnprotectedStorage<C>, 

impl<T> UnprotectedStorage<T> for BTreeStorage<T>

impl<T> UnprotectedStorage<T> for DefaultVecStorage<T> where
    T: Default

impl<T> UnprotectedStorage<T> for DenseVecStorage<T>

impl<T> UnprotectedStorage<T> for HashMapStorage<T>

impl<T> UnprotectedStorage<T> for NullStorage<T> where
    T: Default

impl<T> UnprotectedStorage<T> for VecStorage<T>

Loading content...