Struct SlotMap

Source
pub struct SlotMap<T> {
    slots: Vec<Slot<T>>,
    last_unoccupied: Option<usize>,
}
Expand description

A contigious data structure that never shrinks, but keeps track of lazily deleted elements so that when a new item is inserted, the lazily deleted place is reused. Insertion, removal, and update are all of O(1) time complexity. Inserted elements can be (mutably) accessed or removed with the key returned when they were inserted. Note: might make a slot permanently unusable per u64::MAX insert calls during runtime.

Fields§

§slots: Vec<Slot<T>>§last_unoccupied: Option<usize>

Implementations§

Source§

impl<T> SlotMap<T>

Source

pub fn insert(&mut self, item: T) -> SlotMapKey<T>

Source

pub fn get(&self, key: &SlotMapKey<T>) -> Option<&T>

Source

pub fn get_mut(&mut self, key: &SlotMapKey<T>) -> Option<&mut T>

Source

pub fn remove(&mut self, key: &SlotMapKey<T>) -> Option<T>

Trait Implementations§

Source§

impl<T> Default for SlotMap<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for SlotMap<T>

§

impl<T> RefUnwindSafe for SlotMap<T>
where T: RefUnwindSafe,

§

impl<T> Send for SlotMap<T>
where T: Send,

§

impl<T> Sync for SlotMap<T>
where T: Sync,

§

impl<T> Unpin for SlotMap<T>
where T: Unpin,

§

impl<T> UnwindSafe for SlotMap<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, 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.