Struct slab::Slab
[−]
[src]
pub struct Slab<T, I: Index> { // some fields omitted }
A preallocated chunk of memory for storing objects of the same type.
Methods
impl<T, I: Index> Slab<T, I>
fn new(cap: usize) -> Slab<T, I>
fn new_starting_at(offset: I, cap: usize) -> Slab<T, I>
fn count(&self) -> usize
fn is_empty(&self) -> bool
fn remaining(&self) -> usize
fn has_remaining(&self) -> bool
fn contains(&self, idx: I) -> bool
fn get(&self, idx: I) -> Option<&T>
fn get_mut(&mut self, idx: I) -> Option<&mut T>
fn insert(&mut self, val: T) -> Result<I, T>
fn insert_with<F>(&mut self, f: F) -> Option<I> where F: FnOnce(I) -> T
Like insert
but for objects that require newly allocated
usize in their constructor.
fn remove(&mut self, idx: I) -> Option<T>
Releases the given slot
fn replace(&mut self, idx: I, t: T) -> Option<T>
fn replace_with<F>(&mut self, idx: I, fun: F) -> Result<(), ()> where F: FnOnce(T) -> Option<T>
Execute a function on the value in the slot and put the result of the function back into the slot. If function returns None, slot is left empty on exit.
Returns Err(()) if slot was empty
This method is very useful for storing state machines inside Slab