Heap

Struct Heap 

Source
pub struct Heap { /* private fields */ }
Expand description

The simplest possible heap.

§Safety

Because it’s the simplest implementation, it does NOT free memory. Any memory you drop cannot be reused (it’s leaked), so avoid dropping anything whenever possible.

It is recommended that you use embedded-alloc

Implementations§

Source§

impl Heap

Source

pub const fn empty() -> Heap

Create a new UNINITIALIZED heap allocator

You must initialize this heap using the init method before using the allocator.

Source

pub unsafe fn init(&self, start_addr: usize, size: usize)

Initializes the heap

This function must be called BEFORE you run any code that makes use of the allocator.

start_addr is the address where the heap will be located.

size is the size of the heap in bytes.

§Safety

Obey these or Bad Stuff will happen.

  • This function must be called exactly ONCE.
  • size > 0
Source

pub fn used(&self) -> usize

Returns an estimate of the amount of bytes in use.

Source

pub fn free(&self) -> usize

Returns an estimate of the amount of bytes available.

Trait Implementations§

Source§

impl GlobalAlloc for Heap

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
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
1.28.0 · 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

Auto Trait Implementations§

§

impl !Freeze for Heap

§

impl !RefUnwindSafe for Heap

§

impl Send for Heap

§

impl Sync for Heap

§

impl Unpin for Heap

§

impl UnwindSafe for Heap

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, const R: u8> RFrom<T, R> for T

Source§

fn rfrom(value: T) -> T

Source§

impl<S, T, const R: u8> RInto<T, R> for S
where T: RFrom<S, R>,

Source§

fn rinto(self) -> T

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.