Struct ComponentArray

Source
pub struct ComponentArray<T> { /* private fields */ }
Expand description

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§

Source§

impl<T> ComponentArray<T>

Source

pub fn new() -> Self

Source

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

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

Source

pub fn len(&self) -> usize

Source

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

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

Source

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

Source

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

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

Source

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

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

Source

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

get_ref returns reference to element or none

Source

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

get:mut returns mutable reference or none

Auto Trait Implementations§

§

impl<T> Freeze for ComponentArray<T>

§

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§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

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

Source§

fn vzip(self) -> V