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

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

A lock-free memory pool

Methods

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.

Trait Implementations

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

Auto Trait Implementations

impl<T> !Sync for Pool<T>

Blanket Implementations

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

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> From for T[src]

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

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

The type returned in the event of a conversion error.

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

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

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

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

impl<T> Same for T

type Output = T

Should always be Self