Skip to main content

BumpAllocator

Struct BumpAllocator 

Source
pub struct BumpAllocator<G = ()> { /* private fields */ }
Expand description

Bump allocator that grows upward from HEAP_START.

Generic parameter G allows for optional global state storage at the heap start. Use G = () (the default) for no global state.

§Safety

Only one instance should exist per program, and it must be set as the global allocator. Creating multiple instances or using alongside another allocator is undefined behavior.

Implementations§

Source§

impl<G> BumpAllocator<G>

Source

pub const unsafe fn new() -> Self

Creates a new allocator.

§Safety
  • Only one BumpAllocator instance should exist per program
  • It must be set as the global allocator
  • Multiple instances or using alongside another allocator leads to undefined behavior
  • The Rialo runtime must have zero-initialized the heap region (guaranteed by spec)
Source§

impl<G: Zeroable> BumpAllocator<G>

Source

pub fn global(&self) -> &G

Returns reference to global state reserved at heap start

Trait Implementations§

Source§

impl<G: Zeroable> GlobalAlloc for BumpAllocator<G>

Source§

unsafe fn alloc(&self, layout: Layout) -> *mut u8

Allocates memory as described by the given layout. Read more
Source§

unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout)

Deallocates the block of memory at the given ptr pointer with the given layout. Read more
Source§

unsafe fn realloc( &self, ptr: *mut u8, layout: Layout, new_size: usize, ) -> *mut u8

Shrinks or grows a block of memory to the given new_size in bytes. The block is described by the given ptr pointer and layout. Read more
1.28.0 · Source§

unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8

Behaves like alloc, but also ensures that the contents are set to zero before being returned. Read more

Auto Trait Implementations§

§

impl<G> Freeze for BumpAllocator<G>

§

impl<G> RefUnwindSafe for BumpAllocator<G>
where G: RefUnwindSafe,

§

impl<G> Send for BumpAllocator<G>
where G: Send,

§

impl<G> Sync for BumpAllocator<G>
where G: Sync,

§

impl<G> Unpin for BumpAllocator<G>
where G: Unpin,

§

impl<G> UnsafeUnpin for BumpAllocator<G>

§

impl<G> UnwindSafe for BumpAllocator<G>
where G: 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.