Skip to main content

ScopedArena

Struct ScopedArena 

Source
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§

Source§

impl<A: Allocator> ScopedArena<'_, A>

Source

pub fn reset(&mut self)

Frees the scope’s allocations, returning unused blocks to the parent arena.

Trait Implementations§

Source§

impl<A: Allocator> Allocator for ScopedArena<'_, A>

Source§

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>

Behaves like allocate, but also ensures that the returned memory is zero-initialized. Read more
Source§

unsafe fn deallocate(&self, pointer: NonNull<u8>, layout: Layout)

Deallocates the memory referenced by ptr. Read more
Source§

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>

Behaves like grow, but also ensures that the new contents are set to zero before being returned. Read more
Source§

unsafe fn shrink( &self, pointer: NonNull<u8>, old_layout: Layout, new_layout: Layout, ) -> Result<NonNull<[u8]>, AllocError>

Attempts to shrink the memory block. Read more
Source§

fn by_ref(&self) -> &Self
where Self: Sized,

Creates a “by reference” adapter for this instance of Allocator. Read more

Auto Trait Implementations§

§

impl<'shared, A = Global> !Freeze for ScopedArena<'shared, A>

§

impl<'shared, A = Global> !RefUnwindSafe for ScopedArena<'shared, A>

§

impl<'shared, A = Global> !Sync for ScopedArena<'shared, A>

§

impl<'shared, A = Global> !UnwindSafe for ScopedArena<'shared, A>

§

impl<'shared, A> Send for ScopedArena<'shared, A>
where A: Sync,

§

impl<'shared, A> Unpin for ScopedArena<'shared, A>

§

impl<'shared, A> UnsafeUnpin for ScopedArena<'shared, A>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<A> Arena for A
where A: Allocator + ?Sized,

Source§

fn alloc<T>(&self, value: T) -> &mut T

Allocates value and returns a unique reference to it.
Source§

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_str(&self, src: &str) -> &mut str

Copies src into the arena and returns the copy.
Source§

fn alloc_fmt(&self, arguments: Arguments<'_>) -> &mut str

Formats arguments directly into the arena and returns the resulting string. Read more
Source§

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,

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,

Allocates len copies of value.
Source§

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]

Allocates len elements, each produced by f(index).
Source§

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]

Collects iter into the arena and returns the resulting slice.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.