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

    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> !Sync for Pool<T>` [src]

### `impl<T> Unpin for Pool<T>` [src]

## Blanket Implementations

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

#### `pub fn type_id(&self) -> TypeId` [src]

Gets the `TypeId` of `self`. Read more

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

#### `pub fn borrow(&self) -> &T` [src]

Immutably borrows from an owned value. Read more

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

#### `pub fn borrow_mut(&mut self) -> &mut T` [src]

Mutably borrows from an owned value. Read more

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

#### `pub fn from(t: T) -> T` [src]

Performs the conversion.

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

#### `pub fn into(self) -> U` [src]

Performs the conversion.

### `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.

#### `pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>` [src]

Performs the conversion.

### `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.

#### `pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>` [src]

Performs the conversion.