SimplePool

Struct SimplePool 

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

Mutex-protected free list of chunk buffers.

Finished messages are split() off the front of a chunk, so consecutive messages pack into the same allocation (bump-arena style). take only asks for a fresh chunk when less than a quarter of one is left; that reserve reuses the allocation for free once every message cut from it has been dropped, so steady state is zero allocations, and with messages in flight it costs about one allocation per chunk instead of per message. Memory pinned by in-flight messages is roughly their own size plus one chunk.

Implementations§

Source§

impl SimplePool

Source

pub fn new(initial_capacity: usize) -> Self

Trait Implementations§

Source§

impl BufPool for SimplePool

Available on crate feature std only.
Source§

fn take(&self) -> BytesMut

Source§

fn chunk_size(&self) -> usize

Preferred buffer size; Builder::flush reserves this much when a buffer runs low.
Source§

fn give(&self, b: BytesMut)

Auto Trait Implementations§

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, 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.