pub struct ElasticObjectPool<T: Poolable> { /* private fields */ }Expand description
An elastic object pool.
Pools are configured with a minimum and maximum size, and allocate the minimum number of items up front. When an item is requested and the pool is empty, but hasn’t yet reached its maximum size, it will allocate the item on demand.
After a grace period without growth, a background task shrinks idle capacity toward the minimum capacity. Shrinking removes a fraction of the excess idle items each interval, and returned items above the minimum are dropped immediately while shrinking is active. A new on-demand allocation disables shrinking for another grace period so nearby bursts can reuse the existing capacity.
§Missing
- Configurability for the shrinking frequency, grace period, and batch fraction.
Implementations§
Source§impl<T> ElasticObjectPool<T>
impl<T> ElasticObjectPool<T>
Source§impl<T> ElasticObjectPool<T>where
T: Poolable + 'static,
impl<T> ElasticObjectPool<T>where
T: Poolable + 'static,
Trait Implementations§
Source§impl<T: Poolable> Clone for ElasticObjectPool<T>
impl<T: Poolable> Clone for ElasticObjectPool<T>
Source§impl<T> ObjectPool for ElasticObjectPool<T>
impl<T> ObjectPool for ElasticObjectPool<T>
Source§type AcquireFuture = ElasticAcquireFuture<T>
type AcquireFuture = ElasticAcquireFuture<T>
Type of future returned by
acquire.Source§fn acquire(&self) -> Self::AcquireFuture
fn acquire(&self) -> Self::AcquireFuture
Acquires an item from the object pool.
Auto Trait Implementations§
impl<T> Freeze for ElasticObjectPool<T>
impl<T> !RefUnwindSafe for ElasticObjectPool<T>
impl<T> Send for ElasticObjectPool<T>
impl<T> Sync for ElasticObjectPool<T>
impl<T> Unpin for ElasticObjectPool<T>
impl<T> !UnwindSafe for ElasticObjectPool<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Track for T
impl<T> Track for T
§fn track_resources(self, token: ResourceGroupToken) -> Tracked<Self>
fn track_resources(self, token: ResourceGroupToken) -> Tracked<Self>
Instruments this type by attaching the given resource group token, returning a
Tracked wrapper. Read more§fn in_current_resource_group(self) -> Tracked<Self>
fn in_current_resource_group(self) -> Tracked<Self>
Instruments this type by attaching the current resource group, returning a
Tracked wrapper. Read more