Struct heapless::pool::Pool[][src]

pub struct Pool<T> { /* fields omitted */ }

A lock-free memory pool

Implementations

impl<T> Pool<T>[src]

pub const fn new() -> Self[src]

Creates a new empty pool

pub fn alloc(&self) -> Option<Box<T, Uninit>>[src]

Claims a memory block from the pool

Returns None when the pool is observed as exhausted

NOTE: This method does not have bounded execution time because it contains a CAS loop

pub fn free<S>(&self, value: Box<T, S>) where
    S: 'static, 
[src]

Returns a memory block to the pool

NOTE: T’s destructor (if any) will run on value iff S = Init

NOTE: This method does not have bounded execution time because it contains a CAS loop

pub fn grow(&self, memory: &'static mut [u8]) -> usize[src]

Increases the capacity of the pool

This method might not fully utilize the given memory block due to alignment requirements.

This method returns the number of new blocks that can be allocated.

pub fn grow_exact<A>(&self, memory: &'static mut MaybeUninit<A>) -> usize where
    A: AsMutSlice<Element = Node<T>>, 
[src]

Increases the capacity of the pool

Unlike Pool.grow this method fully utilizes the given memory block

Trait Implementations

impl<T> Send for Pool<T>[src]

Auto Trait Implementations

impl<T> !RefUnwindSafe for Pool<T>

impl<T> !Sync for Pool<T>

impl<T> Unpin for Pool<T>

impl<T> !UnwindSafe for Pool<T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T[src]

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.