[−][src]Struct rustbatch::entities::storage::ComponentArray
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,
T: RefUnwindSafe,
impl<T> Send for ComponentArray<T> where
T: Send,
T: Send,
impl<T> Sync for ComponentArray<T> where
T: Sync,
T: Sync,
impl<T> Unpin for ComponentArray<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for ComponentArray<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,