Trait tower_discover::Discover[][src]

pub trait Discover {
    type Key: Hash + Eq;
    type Service;
    type Error;
    fn poll_discover(
        self: Pin<&mut Self>,
        cx: &mut Context<'_>
    ) -> Poll<Result<Change<Self::Key, Self::Service>, Self::Error>>; }
[]

Provide a uniform set of services able to satisfy a request.

This set of services may be updated over time. On each change to the set, a new NewServiceSet is yielded by Discover.

See crate documentation for more details.

Associated Types

type Key: Hash + Eq[src][]

NewService key

type Service[src][]

The type of Service yielded by this Discover.

type Error[src][]

Error produced during discovery

Required methods

fn poll_discover(
    self: Pin<&mut Self>,
    cx: &mut Context<'_>
) -> Poll<Result<Change<Self::Key, Self::Service>, Self::Error>>
[src][]

Yields the next discovery change set.

Implementations on Foreign Types

impl<P> Discover for Pin<P> where
    P: Unpin + DerefMut,
    P::Target: Discover
[src][]

type Key = <<P as Deref>::Target as Discover>::Key

type Service = <<P as Deref>::Target as Discover>::Service

type Error = <<P as Deref>::Target as Discover>::Error

impl<D: ?Sized + Discover + Unpin> Discover for &mut D[src][]

type Key = D::Key

type Service = D::Service

type Error = D::Error

impl<D: ?Sized + Discover + Unpin> Discover for Box<D>[src][]

type Key = D::Key

type Service = D::Service

type Error = D::Error

Implementors

impl<S, K, Svc> Discover for ServiceStream<S> where
    K: Hash + Eq,
    S: TryStream<Ok = Change<K, Svc>>, 
[src][+]

type Key = K

type Service = Svc

type Error = S::Error

impl<T, U> Discover for ServiceList<T> where
    T: IntoIterator<Item = U>, 
[src][+]

type Key = usize

type Service = U

type Error = Never

impl<MS, Target, Request> Discover for PoolDiscoverer<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

impl<D: Discover + Unpin, M: Copy> Discover for Constant<D, M>

impl<D, I> Discover for PeakEwmaDiscover<D, I> where
    D: Discover,
    I: Clone

impl<D, I> Discover for PendingRequestsDiscover<D, I> where
    D: Discover,
    I: Clone