pub struct LocalArena<A: Allocator = Global>(/* private fields */);Expand description
A single-threaded bump arena.
Fastest of the three; Send but not Sync. Use it for per-task scratch and
any single-threaded pass.
Implementations§
Source§impl LocalArena<Global>
impl LocalArena<Global>
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Creates new arena allocator that uses global allocator to allocate memory chunks.
See LocalArena::new_in for using custom allocator.
Sourcepub const fn with_chunk_size(chunk_size: usize) -> Self
pub const fn with_chunk_size(chunk_size: usize) -> Self
Creates new arena allocator that uses global allocator to allocate memory chunks. With this method you can specify initial chunk size.
See LocalArena::new_in for using custom allocator.
Source§impl<A: Allocator> LocalArena<A>
impl<A: Allocator> LocalArena<A>
Sourcepub const fn new_in(arena: A) -> Self
pub const fn new_in(arena: A) -> Self
Creates a new arena that uses arena to allocate its memory chunks.
Sourcepub const fn with_chunk_size_in(chunk_size: usize, arena: A) -> Self
pub const fn with_chunk_size_in(chunk_size: usize, arena: A) -> Self
Creates a new, empty arena whose chunks are at least chunk_size bytes.
Trait Implementations§
Source§impl<A: Allocator> Allocator for LocalArena<A>
impl<A: Allocator> Allocator for LocalArena<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§
impl<A = Global> !Freeze for LocalArena<A>
impl<A = Global> !RefUnwindSafe for LocalArena<A>
impl<A = Global> !Sync for LocalArena<A>
impl<A = Global> !UnwindSafe for LocalArena<A>
impl<A> Send for LocalArena<A>where
A: Send,
impl<A> Unpin for LocalArena<A>where
A: Unpin,
impl<A> UnsafeUnpin for LocalArena<A>where
A: UnsafeUnpin,
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