Struct slab::Slab
[−]
[src]
pub struct Slab<T, I: Index> { /* fields omitted */ }
A preallocated chunk of memory for storing objects of the same type.
Methods
impl<T, I: Index> Slab<T, I>
[src]
fn new(capacity: usize) -> Slab<T, I>
fn new_starting_at(offset: I, capacity: 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, fun: F) -> Option<I> where
F: FnOnce(I) -> T,
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>,
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
fn retain<F>(&mut self, fun: F) where
F: FnMut(&T) -> bool,
F: FnMut(&T) -> bool,
Retain only the elements specified by the predicate.
In other words, remove all elements e
such that f(&e)
returns false.
This method operates in place and preserves the order of the retained
elements.
fn iter(&self) -> SlabIter<T, I>
fn iter_mut(&mut self) -> SlabMutIter<T, I>
fn clear(&mut self)
Empty the slab, by freeing all entries
fn grow(&mut self, entries_num: usize)
Grow the slab, by adding entries_num
Trait Implementations
impl<T, I: Index> Send for Slab<T, I> where
T: Send,
[src]
T: Send,
impl<T, I: Index> Index<I> for Slab<T, I>
[src]
type Output = T
The returned type after indexing
fn index(&self, index: I) -> &T
The method for the indexing (container[index]
) operation
impl<T, I: Index> IndexMut<I> for Slab<T, I>
[src]
fn index_mut(&mut self, index: I) -> &mut T
The method for the mutable indexing (container[index]
) operation
impl<T, I: Index> Debug for Slab<T, I>
[src]
impl<'a, T, I: Index> IntoIterator for &'a Slab<T, I>
[src]
type Item = &'a T
The type of the elements being iterated over.
type IntoIter = SlabIter<'a, T, I>
Which kind of iterator are we turning this into?
fn into_iter(self) -> SlabIter<'a, T, I>
Creates an iterator from a value. Read more
impl<'a, T, I: Index> IntoIterator for &'a mut Slab<T, I>
[src]
type Item = &'a mut T
The type of the elements being iterated over.
type IntoIter = SlabMutIter<'a, T, I>
Which kind of iterator are we turning this into?
fn into_iter(self) -> SlabMutIter<'a, T, I>
Creates an iterator from a value. Read more