pub struct ScopedArena<'shared, A: Allocator = Global>(/* private fields */);Expand description
A thread-local view into a SharedArena, handed out by
SharedArena::scoped.
It draws blocks from its parent SharedArena and hands out allocations
locally, without the atomic contention of allocating through the shared arena
directly. Allocations are tied to the scope’s borrow rather than to the parent
arena, so a ScopedArena is for scratch that does not escape the scope;
anything that must outlive the scope should be allocated into the
SharedArena itself.
Implementations§
Trait Implementations§
Source§impl<A: Allocator> Allocator for ScopedArena<'_, A>
impl<A: Allocator> Allocator for ScopedArena<'_, A>
Source§fn allocate(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>
fn allocate(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>
Attempts to allocate a block of memory. Read more
Source§fn allocate_zeroed(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>
fn allocate_zeroed(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>
Behaves like
allocate, but also ensures that the returned memory is zero-initialized. Read moreSource§unsafe fn deallocate(&self, pointer: NonNull<u8>, layout: Layout)
unsafe fn deallocate(&self, pointer: NonNull<u8>, layout: Layout)
Deallocates the memory referenced by
ptr. Read moreSource§unsafe fn grow(
&self,
pointer: NonNull<u8>,
old_layout: Layout,
new_layout: Layout,
) -> Result<NonNull<[u8]>, AllocError>
unsafe fn grow( &self, pointer: NonNull<u8>, old_layout: Layout, new_layout: Layout, ) -> Result<NonNull<[u8]>, AllocError>
Attempts to extend the memory block. Read more
Source§unsafe fn grow_zeroed(
&self,
pointer: NonNull<u8>,
old_layout: Layout,
new_layout: Layout,
) -> Result<NonNull<[u8]>, AllocError>
unsafe fn grow_zeroed( &self, pointer: NonNull<u8>, old_layout: Layout, new_layout: Layout, ) -> Result<NonNull<[u8]>, AllocError>
Behaves like
grow, but also ensures that the new contents are set to zero before being
returned. Read moreAuto Trait Implementations§
Blanket Implementations§
Source§impl<A> Arena for A
impl<A> Arena for A
Source§fn alloc_with<T>(&self, f: impl FnOnce() -> T) -> &mut T
fn alloc_with<T>(&self, f: impl FnOnce() -> T) -> &mut T
Allocates the result of
f, evaluated directly into the arena slot.Source§fn alloc_fmt(&self, arguments: Arguments<'_>) -> &mut str
fn alloc_fmt(&self, arguments: Arguments<'_>) -> &mut str
Formats
arguments directly into the arena and returns the resulting string. Read moreSource§fn alloc_slice_copy<T>(&self, src: &[T]) -> &mut [T]where
T: Copy,
fn alloc_slice_copy<T>(&self, src: &[T]) -> &mut [T]where
T: Copy,
Copies a slice of
Copy values into the arena.Source§fn alloc_slice_clone<T>(&self, src: &[T]) -> &mut [T]where
T: Clone,
fn alloc_slice_clone<T>(&self, src: &[T]) -> &mut [T]where
T: Clone,
Clones a slice of
Clone values into the arena.Source§fn alloc_slice_fill_copy<T>(&self, len: usize, value: T) -> &mut [T]where
T: Copy,
fn alloc_slice_fill_copy<T>(&self, len: usize, value: T) -> &mut [T]where
T: Copy,
Allocates
len copies of value.Source§fn alloc_slice_fill_clone<T>(&self, len: usize, value: &T) -> &mut [T]where
T: Clone,
fn alloc_slice_fill_clone<T>(&self, len: usize, value: &T) -> &mut [T]where
T: Clone,
Allocates
len clones of value.Source§fn alloc_slice_fill_with<T>(
&self,
len: usize,
f: impl FnMut(usize) -> T,
) -> &mut [T]
fn alloc_slice_fill_with<T>( &self, len: usize, f: impl FnMut(usize) -> T, ) -> &mut [T]
Allocates
len elements, each produced by f(index).Source§fn alloc_slice_fill_default<T>(&self, len: usize) -> &mut [T]where
T: Default,
fn alloc_slice_fill_default<T>(&self, len: usize) -> &mut [T]where
T: Default,
Allocates
len default-constructed elements.Source§fn alloc_slice_fill_iter<T>(
&self,
iter: impl IntoIterator<Item = T>,
) -> &mut [T]
fn alloc_slice_fill_iter<T>( &self, iter: impl IntoIterator<Item = T>, ) -> &mut [T]
Collects
iter into the arena and returns the resulting slice.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