LinearAllocator

Struct LinearAllocator 

Source
pub struct LinearAllocator<A: Allocator> { /* private fields */ }
Expand description

LinearAllocator is an arena allocator, meaning that deallocating individual allocations made by this allocator does nothing. Instead, the whole backing memory is dropped at once. Destructors for these objects are not called automatically and must be done by the caller if it’s necessary.

Once the slice of memory that underpins the LinearAllocator has been allocated, allocations will begin to fail. It will not find new memory to back allocations.

Implementations§

Source§

impl<A: Allocator> LinearAllocator<A>

Source

pub fn new_in(layout: Layout, allocator: A) -> Result<Self, AllocError>

Creates a new LinearAllocator by requesting the layout from the provided allocator. Note that if the allocation is over-sized, meaning it’s larger than the requested layout.size(), then the LinearAllocator will utilize this excess.

Source

pub fn used_bytes(&self) -> usize

Get the number of bytes allocated.

Source

pub fn reserved_bytes(&self) -> usize

Get the number of bytes allocated by the underlying allocator. This number is greater than or equal to Self::used_bytes.

Source

pub fn remaining_capacity(&self) -> usize

Gets the number of bytes that can be allocated without requesting more from the underlying allocator.

Source

pub fn has_capacity_for(&self, layout: Layout) -> bool

Determine if the given layout will fit in the current allocator

Trait Implementations§

Source§

impl<A: Allocator> Allocator for LinearAllocator<A>

Source§

fn allocate(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>

Attempts to allocate a block of memory. Read more
Source§

unsafe fn deallocate(&self, _ptr: NonNull<u8>, _layout: Layout)

Deallocates the memory referenced by ptr. 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 grow( &self, ptr: 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, ptr: 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, ptr: 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
Source§

impl<A: Allocator> Drop for LinearAllocator<A>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<A: Allocator> Send for LinearAllocator<A>

Auto Trait Implementations§

§

impl<A> !Freeze for LinearAllocator<A>

§

impl<A> !RefUnwindSafe for LinearAllocator<A>

§

impl<A> !Sync for LinearAllocator<A>

§

impl<A> Unpin for LinearAllocator<A>
where A: Unpin,

§

impl<A> UnwindSafe for LinearAllocator<A>
where A: UnwindSafe,

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<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.