Struct zone_alloc::registry::Registry
source · pub struct Registry<T> { /* private fields */ }Expand description
A container that can be used for registering values of a given type and retrieving references by handle.
A registry is a centralized container that values can be inserted into and borrowed from. A registry provides several guarantees:
- Arena-based allocated values using an
Arena(all references are valid for the lifetime of the container). - Runtime-checked immutable and mutable borrow rules.
- Values can be borrowed completely independent of one another.
A single value can be moved into the registry using Registry::register, and multiple values
can be moved in using Registry::register_extend.
Implementations§
source§impl<T> Registry<T>
impl<T> Registry<T>
sourcepub fn with_capacity(size: usize) -> Self
pub fn with_capacity(size: usize) -> Self
Creates a new registry with the given capacity.
sourcepub fn register(&self, value: T) -> Handle
pub fn register(&self, value: T) -> Handle
Registers a new value in the arena, returning a handle to that value.
sourcepub fn register_extend<I>(&self, iterable: I) -> (Handle, Handle)where
I: IntoIterator<Item = T>,
pub fn register_extend<I>(&self, iterable: I) -> (Handle, Handle)where
I: IntoIterator<Item = T>,
Registers the contents of an iterator in the registry.
Returns a numeric range of handles [a, b), where a is the handle of the first element
inserted and b is the handle after the last element inserted.
sourcepub fn reserve(&self, additional: usize)
pub fn reserve(&self, additional: usize)
Ensures there is enough continuous space for at least additional values.
sourcepub fn into_vec(self) -> Vec<T>
pub fn into_vec(self) -> Vec<T>
Converts the Registry<T> into a Vec<T>.
Items will maintain their handle as their vector index.
sourcepub fn iter(
&self
) -> impl Iterator<Item = Result<ElementRef<'_, T>, BorrowError>>
pub fn iter( &self ) -> impl Iterator<Item = Result<ElementRef<'_, T>, BorrowError>>
Returns an iterator that provides immutable access to all elements in the registry, in order of registration.
sourcepub fn iter_mut(
&mut self
) -> impl Iterator<Item = Result<ElementRefMut<'_, T>, BorrowError>>
pub fn iter_mut( &mut self ) -> impl Iterator<Item = Result<ElementRefMut<'_, T>, BorrowError>>
Returns an iterator that provides mutable access to all elements in the registry, in order of registration.
sourcepub fn get_unchecked(&self, handle: Handle) -> ElementRef<'_, T>
pub fn get_unchecked(&self, handle: Handle) -> ElementRef<'_, T>
Returns a reference to a value previously registered in the registry.
Panics if there is a borrow error.
sourcepub fn get(&self, handle: Handle) -> Result<ElementRef<'_, T>, BorrowError>
pub fn get(&self, handle: Handle) -> Result<ElementRef<'_, T>, BorrowError>
Tries to get a reference to a value previously registered in the registry.
sourcepub fn get_mut_unchecked(&self, handle: Handle) -> ElementRefMut<'_, T>
pub fn get_mut_unchecked(&self, handle: Handle) -> ElementRefMut<'_, T>
Returns a mutable reference to a value previously registered in the registry.
Panics if there is a borrow error.
sourcepub fn get_mut(
&self,
handle: Handle
) -> Result<ElementRefMut<'_, T>, BorrowError>
pub fn get_mut( &self, handle: Handle ) -> Result<ElementRefMut<'_, T>, BorrowError>
Tries to get a mutable reference to a value previously registered in the registry.