[][src]Struct rustbatch::entities::storage::ComponentArray

pub struct ComponentArray<T> { /* fields omitted */ }

ComponentArray is alternative to storing components in hashmap. Its considerable faster to access elements of course there is a cost for that. You cannot choose your own ids ComponentArray generates them for you. Model is surprisingly simple but powerful. To use this properly you have to ALWAYS remove no longer needed component unless you like memory leaks.

Implementations

impl<T> ComponentArray<T>[src]

pub fn new() -> Self[src]

pub fn insert(&mut self, component: T) -> usize[src]

insert takes an value and returns id to is. (Its not really id but you can use it like it)

pub fn len(&self) -> usize[src]

pub fn remove(&mut self, id: usize) -> T[src]

remove is important. Always remove the objects so memory can be reused for another one.

pub fn remove_if_present(&mut self, id: usize) -> Option<T>[src]

pub unsafe fn get(&mut self, id: usize) -> Option<T>[src]

get is not equivalent fo remove, if you do not put back what you taken you are leaking memory because ComponentArray still considers it occupied. Function is here to solve situations when you need mutable and immutable asses to array elements at the same time

pub unsafe fn put_back(&mut self, id: usize, component: T)[src]

Call this after get on the same id. This function is unsafe for a reason, you can very easily put your data somewhere where its considered free and it can then be overwrite by insert call

pub fn get_ref(&self, id: usize) -> &Option<T>[src]

get_ref returns reference to element or none

pub fn get_mut(&mut self, id: usize) -> &mut Option<T>[src]

get:mut returns mutable reference or none

Auto Trait Implementations

impl<T> RefUnwindSafe for ComponentArray<T> where
    T: RefUnwindSafe

impl<T> Send for ComponentArray<T> where
    T: Send

impl<T> Sync for ComponentArray<T> where
    T: Sync

impl<T> Unpin for ComponentArray<T> where
    T: Unpin

impl<T> UnwindSafe for ComponentArray<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,