Struct thunderdome::Arena [−][src]
Container that can have elements inserted into it and removed from it.
Indices use the Index
type, created by inserting values with Arena::insert
.
Implementations
impl<T> Arena<T>
[src]
pub fn new() -> Self
[src]
Construct an empty arena.
pub fn with_capacity(capacity: usize) -> Self
[src]
Construct an empty arena with space to hold exactly capacity
elements
without reallocating.
pub fn len(&self) -> usize
[src]
Return the number of elements contained in the arena.
pub fn capacity(&self) -> usize
[src]
Return the number of elements the arena can hold without allocating, including the elements currently in the arena.
pub fn is_empty(&self) -> bool
[src]
Returns whether the arena is empty.
pub fn insert(&mut self, value: T) -> Index
[src]
Insert a new value into the arena, returning an index that can be used to later retrieve the value.
pub fn contains(&self, index: Index) -> bool
[src]
Returns true if the given index is valid for the arena.
pub fn contains_slot(&self, slot: u32) -> Option<Index>
[src]
Checks to see whether a slot is occupied in the arena, and if it is,
returns Some
with the true Index
of that slot (slot plus generation.)
Otherwise, returns None
.
pub fn get(&self, index: Index) -> Option<&T>
[src]
Get an immutable reference to a value inside the arena by
Index
, returning None
if the index is not contained in the arena.
pub fn get_mut(&mut self, index: Index) -> Option<&mut T>
[src]
Get a mutable reference to a value inside the arena by Index
,
returning None
if the index is not contained in the arena.
pub fn get2_mut(
&mut self,
index1: Index,
index2: Index
) -> (Option<&mut T>, Option<&mut T>)
[src]
&mut self,
index1: Index,
index2: Index
) -> (Option<&mut T>, Option<&mut T>)
Get mutable references of two values inside this arena at once by
Index
, returning None
if the corresponding index
is not
contained in this arena.
Panics
This function panics when the two indices are equal (having the same slot number and generation).
pub fn remove(&mut self, index: Index) -> Option<T>
[src]
Remove the value contained at the given index from the arena, returning it if it was present.
pub fn invalidate(&mut self, index: Index) -> Option<Index>
[src]
Invalidate the given index and return a new index to the same value. This
is roughly equivalent to remove
followed by insert
, but much faster.
If the old index is already invalid, this method returns None
.
pub fn get_by_slot(&self, slot: u32) -> Option<(Index, &T)>
[src]
Attempt to look up the given slot in the arena, disregarding any generational
information, and retrieve an immutable reference to it. Returns None
if the
slot is empty.
pub fn get_by_slot_mut(&mut self, slot: u32) -> Option<(Index, &mut T)>
[src]
Attempt to look up the given slot in the arena, disregarding any generational
information, and retrieve a mutable reference to it. Returns None
if the
slot is empty.
pub fn remove_by_slot(&mut self, slot: u32) -> Option<(Index, T)>
[src]
Remove an entry in the arena by its slot, disregarding any generational info.
Returns None
if the slot was already empty.
pub fn clear(&mut self)
[src]
Clear the arena and drop all elements.
pub fn iter(&self) -> Iter<'_, T>ⓘ
[src]
Iterate over all of the indexes and values contained in the arena.
Iteration order is not defined.
pub fn iter_mut(&mut self) -> IterMut<'_, T>ⓘ
[src]
Iterate over all of the indexes and values contained in the arena, with mutable access to each value.
Iteration order is not defined.
pub fn drain(&mut self) -> Drain<'_, T>ⓘ
[src]
Returns an iterator that removes each element from the arena.
Iteration order is not defined.
If the iterator is dropped before it is fully consumed, any uniterated items will be dropped from the arena, and the arena will be empty. The arena’s capacity will not be changed.
pub fn retain<F: FnMut(Index, &mut T) -> bool>(&mut self, f: F)
[src]
Remove all entries in the Arena
which don’t satisfy the provided predicate.
Trait Implementations
impl<T: Clone> Clone for Arena<T>
[src]
impl<T: Debug> Debug for Arena<T>
[src]
impl<T> Default for Arena<T>
[src]
impl<T> Index<Index> for Arena<T>
[src]
type Output = T
The returned type after indexing.
fn index(&self, index: Index) -> &Self::Output
[src]
impl<T> IndexMut<Index> for Arena<T>
[src]
impl<T> IntoIterator for Arena<T>
[src]
type Item = (Index, T)
The type of the elements being iterated over.
type IntoIter = IntoIter<T>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
[src]
impl<'a, T> IntoIterator for &'a Arena<T>
[src]
type Item = (Index, &'a T)
The type of the elements being iterated over.
type IntoIter = Iter<'a, T>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
[src]
impl<'a, T> IntoIterator for &'a mut Arena<T>
[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for Arena<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for Arena<T> where
T: Send,
T: Send,
impl<T> Sync for Arena<T> where
T: Sync,
T: Sync,
impl<T> Unpin for Arena<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for Arena<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,