Struct heapless::pool::Pool [−][src]
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]
S: 'static,
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]
A: AsMutSlice<Element = Node<T>>,
Increases the capacity of the pool
Unlike Pool.grow
this method fully utilizes the given
memory block
Trait Implementations
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
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]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,