pub struct Pool<MS, Target, Request>where
MS: MakeService<Target, Request>,
MS::MakeError: Into<Box<dyn Error + Send + Sync>>,
MS::Error: Into<Box<dyn Error + Send + Sync>>,
Target: Clone,{ /* private fields */ }Expand description
A dynamically sized, load-balanced pool of Service instances.
Implementations§
Source§impl<MS, Target, Request> Pool<MS, Target, Request>
impl<MS, Target, Request> Pool<MS, Target, Request>
Sourcepub fn new(make_service: MS, target: Target) -> Self
pub fn new(make_service: MS, target: Target) -> Self
Construct a new dynamically sized Pool.
If many calls to poll_ready return Pending, new_service is used to
construct another Service that is then added to the load-balanced pool.
If many calls to poll_ready succeed, the most recently added Service
is dropped from the pool.
Trait Implementations§
Source§impl<MS, Target, Req> Service<Req> for Pool<MS, Target, Req>
impl<MS, Target, Req> Service<Req> for Pool<MS, Target, Req>
Source§type Response = <Balance<Pin<Box<PoolDiscoverer<MS, Target, Req>>>, Req> as Service<Req>>::Response
type Response = <Balance<Pin<Box<PoolDiscoverer<MS, Target, Req>>>, Req> as Service<Req>>::Response
Responses given by the service.
Source§type Error = <Balance<Pin<Box<PoolDiscoverer<MS, Target, Req>>>, Req> as Service<Req>>::Error
type Error = <Balance<Pin<Box<PoolDiscoverer<MS, Target, Req>>>, Req> as Service<Req>>::Error
Errors produced by the service.
Source§type Future = <Balance<Pin<Box<PoolDiscoverer<MS, Target, Req>>>, Req> as Service<Req>>::Future
type Future = <Balance<Pin<Box<PoolDiscoverer<MS, Target, Req>>>, Req> as Service<Req>>::Future
The future response value.
Auto Trait Implementations§
impl<MS, Target, Request> !Freeze for Pool<MS, Target, Request>
impl<MS, Target, Request> !RefUnwindSafe for Pool<MS, Target, Request>
impl<MS, Target, Request> Send for Pool<MS, Target, Request>where
<MS as MakeService<Target, Request>>::Error: Sized,
<MS as MakeService<Target, Request>>::MakeError: Sized,
Request: Send,
MS: Send,
Target: Send,
<MS as MakeService<Target, Request>>::Future: Send,
<MS as MakeService<Target, Request>>::Service: Send,
impl<MS, Target, Request> Sync for Pool<MS, Target, Request>where
<MS as MakeService<Target, Request>>::Error: Sized,
<MS as MakeService<Target, Request>>::MakeError: Sized,
Request: Sync,
MS: Sync,
Target: Sync,
<MS as MakeService<Target, Request>>::Future: Sync,
<MS as MakeService<Target, Request>>::Service: Sync,
impl<MS, Target, Request> Unpin for Pool<MS, Target, Request>where
<MS as MakeService<Target, Request>>::Error: Sized,
<MS as MakeService<Target, Request>>::MakeError: Sized,
Request: Unpin,
impl<MS, Target, Request> !UnwindSafe for Pool<MS, Target, Request>
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<M, S, Target, Request> MakeService<Target, Request> for M
impl<M, S, Target, Request> MakeService<Target, Request> for M
Source§fn poll_ready(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Result<(), <M as MakeService<Target, Request>>::MakeError>>
fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <M as MakeService<Target, Request>>::MakeError>>
Returns
Ready when the factory is able to create more services. Read moreSource§fn make_service(
&mut self,
target: Target,
) -> <M as MakeService<Target, Request>>::Future
fn make_service( &mut self, target: Target, ) -> <M as MakeService<Target, Request>>::Future
Create and return a new service value asynchronously.