Trait tower::discover::Discover[][src]

pub trait Discover {
    type Key: Hash + Eq;
    type Service;
    type Error;
    pub 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

Loading content...

Required methods

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

Loading content...

Implementations on Foreign Types

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

type Key = <D as Discover>::Key

type Service = <D as Discover>::Service

type Error = <D as Discover>::Error

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

type Key = <D as Discover>::Key

type Service = <D as Discover>::Service

type Error = <D as Discover>::Error

impl<P> Discover for Pin<P> where
    P: Unpin + DerefMut,
    <P as Deref>::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, I> Discover for PendingRequestsDiscover<D, I> where
    I: Clone,
    D: Discover
[src]

type Key = <D as Discover>::Key

type Service = PendingRequests<<D as Discover>::Service, I>

type Error = <D as Discover>::Error

pub fn poll_discover(
    self: Pin<&mut PendingRequestsDiscover<D, I>>,
    cx: &mut Context<'_>
) -> Poll<Result<Change<<D as Discover>::Key, <PendingRequestsDiscover<D, I> as Discover>::Service>, <D as Discover>::Error>>
[src]

Yields the next discovery change set.

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

type Key = <D as Discover>::Key

type Service = PeakEwma<<D as Discover>::Service, I>

type Error = <D as Discover>::Error

impl<D, M> Discover for Constant<D, M> where
    M: Copy,
    D: Discover + Unpin
[src]

Proxies Discover such that all changes are wrapped with a constant load.

type Key = <D as Discover>::Key

type Service = Constant<<D as Discover>::Service, M>

type Error = <D as Discover>::Error

pub fn poll_discover(
    self: Pin<&mut Constant<D, M>>,
    cx: &mut Context<'_>
) -> Poll<Result<Change<<D as Discover>::Key, <Constant<D, M> as Discover>::Service>, <D as Discover>::Error>>
[src]

Yields the next discovery change set.

Loading content...

Implementors

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

type Key = K

type Service = Svc

type Error = <S as TryStream>::Error

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

type Key = usize

type Service = U

type Error = Never

Loading content...