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>
impl<T> SlotMap<T>
pub fn insert(&mut self, item: T) -> SlotMapKey<T>
pub fn get(&self, key: &SlotMapKey<T>) -> Option<&T>
pub fn get_mut(&mut self, key: &SlotMapKey<T>) -> Option<&mut T>
pub fn remove(&mut self, key: &SlotMapKey<T>) -> Option<T>
Trait Implementations§
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more