Skip to main content

ServiceMatcher

Trait ServiceMatcher 

pub trait ServiceMatcher<Input>:
    Send
    + Sync
    + 'static {
    type Service: Send + 'static;
    type Error: Send + 'static;
    type ModifiedInput: Send + 'static;

    // Required method
    fn match_service(
        &self,
        input: Input,
    ) -> impl Future<Output = Result<ServiceMatch<Self::ModifiedInput, Self::Service>, Self::Error>> + Send;

    // Provided methods
    fn into_match_service(
        self,
        input: Input,
    ) -> impl Future<Output = Result<ServiceMatch<Self::ModifiedInput, Self::Service>, Self::Error>> + Send
       where Self: Sized,
             Input: Send { ... }
    fn boxed(
        self,
    ) -> BoxServiceMatcher<Input, Self::Service, Self::Error, Self::ModifiedInput>
       where Self: Sized { ... }
}
Expand description

Selects a concrete service for an input.

This is useful when the service decision itself depends on runtime input, while still preserving the selected value for later processing.

Required Associated Types§

type Service: Send + 'static

The value returned when a match succeeds.

type Error: Send + 'static

The error that can happen while evaluating the matcher.

type ModifiedInput: Send + 'static

Input returned by matching functions, it might be same as the original input but it can also be modified.

Required Methods§

fn match_service( &self, input: Input, ) -> impl Future<Output = Result<ServiceMatch<Self::ModifiedInput, Self::Service>, Self::Error>> + Send

Attempt to select a service for input.

Provided Methods§

fn into_match_service( self, input: Input, ) -> impl Future<Output = Result<ServiceMatch<Self::ModifiedInput, Self::Service>, Self::Error>> + Send
where Self: Sized, Input: Send,

Attempt to select a service for input, consuming the matcher.

Override this when the matcher stores services by value and can return them without cloning.

fn boxed( self, ) -> BoxServiceMatcher<Input, Self::Service, Self::Error, Self::ModifiedInput>
where Self: Sized,

Box this matcher for dynamic dispatch.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl<Input, ModifiedInput, SM1, SM2> ServiceMatcher<Input> for (SM1, SM2)
where Input: Send + ExtensionsMut + 'static, ModifiedInput: Send + 'static, SM1: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <SM1 as ServiceMatcher<Input>>::Error: Into<Box<dyn Error + Send + Sync>>, SM2: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM2 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>,

§

type Service = Either<<SM1 as ServiceMatcher<Input>>::Service, <SM2 as ServiceMatcher<ModifiedInput>>::Service>

§

type Error = Box<dyn Error + Send + Sync>

§

type ModifiedInput = ModifiedInput

§

async fn match_service( &self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2) as ServiceMatcher<Input>>::Service>, <(SM1, SM2) as ServiceMatcher<Input>>::Error>

§

async fn into_match_service( self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2) as ServiceMatcher<Input>>::Service>, <(SM1, SM2) as ServiceMatcher<Input>>::Error>
where Input: Send,

§

impl<Input, ModifiedInput, SM1, SM2, SM3> ServiceMatcher<Input> for (SM1, SM2, SM3)
where Input: Send + ExtensionsMut + 'static, ModifiedInput: Send + 'static, SM1: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <SM1 as ServiceMatcher<Input>>::Error: Into<Box<dyn Error + Send + Sync>>, SM2: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM2 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM3: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM3 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>,

§

type Service = Either3<<SM1 as ServiceMatcher<Input>>::Service, <SM2 as ServiceMatcher<ModifiedInput>>::Service, <SM3 as ServiceMatcher<ModifiedInput>>::Service>

§

type Error = Box<dyn Error + Send + Sync>

§

type ModifiedInput = ModifiedInput

§

async fn match_service( &self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3) as ServiceMatcher<Input>>::Error>

§

async fn into_match_service( self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3) as ServiceMatcher<Input>>::Error>
where Input: Send,

§

impl<Input, ModifiedInput, SM1, SM2, SM3, SM4> ServiceMatcher<Input> for (SM1, SM2, SM3, SM4)
where Input: Send + ExtensionsMut + 'static, ModifiedInput: Send + 'static, SM1: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <SM1 as ServiceMatcher<Input>>::Error: Into<Box<dyn Error + Send + Sync>>, SM2: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM2 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM3: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM3 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM4: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM4 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>,

§

type Service = Either4<<SM1 as ServiceMatcher<Input>>::Service, <SM2 as ServiceMatcher<ModifiedInput>>::Service, <SM3 as ServiceMatcher<ModifiedInput>>::Service, <SM4 as ServiceMatcher<ModifiedInput>>::Service>

§

type Error = Box<dyn Error + Send + Sync>

§

type ModifiedInput = ModifiedInput

§

async fn match_service( &self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4) as ServiceMatcher<Input>>::Error>

§

async fn into_match_service( self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4) as ServiceMatcher<Input>>::Error>
where Input: Send,

§

impl<Input, ModifiedInput, SM1, SM2, SM3, SM4, SM5> ServiceMatcher<Input> for (SM1, SM2, SM3, SM4, SM5)
where Input: Send + ExtensionsMut + 'static, ModifiedInput: Send + 'static, SM1: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <SM1 as ServiceMatcher<Input>>::Error: Into<Box<dyn Error + Send + Sync>>, SM2: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM2 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM3: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM3 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM4: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM4 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM5: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM5 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>,

§

type Service = Either5<<SM1 as ServiceMatcher<Input>>::Service, <SM2 as ServiceMatcher<ModifiedInput>>::Service, <SM3 as ServiceMatcher<ModifiedInput>>::Service, <SM4 as ServiceMatcher<ModifiedInput>>::Service, <SM5 as ServiceMatcher<ModifiedInput>>::Service>

§

type Error = Box<dyn Error + Send + Sync>

§

type ModifiedInput = ModifiedInput

§

async fn match_service( &self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5) as ServiceMatcher<Input>>::Error>

§

async fn into_match_service( self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5) as ServiceMatcher<Input>>::Error>
where Input: Send,

§

impl<Input, ModifiedInput, SM1, SM2, SM3, SM4, SM5, SM6> ServiceMatcher<Input> for (SM1, SM2, SM3, SM4, SM5, SM6)
where Input: Send + ExtensionsMut + 'static, ModifiedInput: Send + 'static, SM1: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <SM1 as ServiceMatcher<Input>>::Error: Into<Box<dyn Error + Send + Sync>>, SM2: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM2 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM3: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM3 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM4: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM4 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM5: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM5 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM6: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM6 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>,

§

type Service = Either6<<SM1 as ServiceMatcher<Input>>::Service, <SM2 as ServiceMatcher<ModifiedInput>>::Service, <SM3 as ServiceMatcher<ModifiedInput>>::Service, <SM4 as ServiceMatcher<ModifiedInput>>::Service, <SM5 as ServiceMatcher<ModifiedInput>>::Service, <SM6 as ServiceMatcher<ModifiedInput>>::Service>

§

type Error = Box<dyn Error + Send + Sync>

§

type ModifiedInput = ModifiedInput

§

async fn match_service( &self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5, SM6) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5, SM6) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5, SM6) as ServiceMatcher<Input>>::Error>

§

async fn into_match_service( self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5, SM6) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5, SM6) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5, SM6) as ServiceMatcher<Input>>::Error>
where Input: Send,

§

impl<Input, ModifiedInput, SM1, SM2, SM3, SM4, SM5, SM6, SM7> ServiceMatcher<Input> for (SM1, SM2, SM3, SM4, SM5, SM6, SM7)
where Input: Send + ExtensionsMut + 'static, ModifiedInput: Send + 'static, SM1: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <SM1 as ServiceMatcher<Input>>::Error: Into<Box<dyn Error + Send + Sync>>, SM2: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM2 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM3: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM3 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM4: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM4 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM5: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM5 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM6: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM6 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM7: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM7 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>,

§

type Service = Either7<<SM1 as ServiceMatcher<Input>>::Service, <SM2 as ServiceMatcher<ModifiedInput>>::Service, <SM3 as ServiceMatcher<ModifiedInput>>::Service, <SM4 as ServiceMatcher<ModifiedInput>>::Service, <SM5 as ServiceMatcher<ModifiedInput>>::Service, <SM6 as ServiceMatcher<ModifiedInput>>::Service, <SM7 as ServiceMatcher<ModifiedInput>>::Service>

§

type Error = Box<dyn Error + Send + Sync>

§

type ModifiedInput = ModifiedInput

§

async fn match_service( &self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5, SM6, SM7) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7) as ServiceMatcher<Input>>::Error>

§

async fn into_match_service( self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5, SM6, SM7) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7) as ServiceMatcher<Input>>::Error>
where Input: Send,

§

impl<Input, ModifiedInput, SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8> ServiceMatcher<Input> for (SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8)
where Input: Send + ExtensionsMut + 'static, ModifiedInput: Send + 'static, SM1: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <SM1 as ServiceMatcher<Input>>::Error: Into<Box<dyn Error + Send + Sync>>, SM2: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM2 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM3: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM3 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM4: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM4 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM5: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM5 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM6: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM6 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM7: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM7 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM8: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM8 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>,

§

type Service = Either8<<SM1 as ServiceMatcher<Input>>::Service, <SM2 as ServiceMatcher<ModifiedInput>>::Service, <SM3 as ServiceMatcher<ModifiedInput>>::Service, <SM4 as ServiceMatcher<ModifiedInput>>::Service, <SM5 as ServiceMatcher<ModifiedInput>>::Service, <SM6 as ServiceMatcher<ModifiedInput>>::Service, <SM7 as ServiceMatcher<ModifiedInput>>::Service, <SM8 as ServiceMatcher<ModifiedInput>>::Service>

§

type Error = Box<dyn Error + Send + Sync>

§

type ModifiedInput = ModifiedInput

§

async fn match_service( &self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8) as ServiceMatcher<Input>>::Error>

§

async fn into_match_service( self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8) as ServiceMatcher<Input>>::Error>
where Input: Send,

§

impl<Input, ModifiedInput, SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8, SM9> ServiceMatcher<Input> for (SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8, SM9)
where Input: Send + ExtensionsMut + 'static, ModifiedInput: Send + 'static, SM1: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <SM1 as ServiceMatcher<Input>>::Error: Into<Box<dyn Error + Send + Sync>>, SM2: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM2 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM3: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM3 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM4: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM4 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM5: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM5 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM6: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM6 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM7: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM7 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM8: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM8 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>, SM9: ServiceMatcher<ModifiedInput, ModifiedInput = ModifiedInput>, <SM9 as ServiceMatcher<ModifiedInput>>::Error: Into<Box<dyn Error + Send + Sync>>,

§

type Service = Either9<<SM1 as ServiceMatcher<Input>>::Service, <SM2 as ServiceMatcher<ModifiedInput>>::Service, <SM3 as ServiceMatcher<ModifiedInput>>::Service, <SM4 as ServiceMatcher<ModifiedInput>>::Service, <SM5 as ServiceMatcher<ModifiedInput>>::Service, <SM6 as ServiceMatcher<ModifiedInput>>::Service, <SM7 as ServiceMatcher<ModifiedInput>>::Service, <SM8 as ServiceMatcher<ModifiedInput>>::Service, <SM9 as ServiceMatcher<ModifiedInput>>::Service>

§

type Error = Box<dyn Error + Send + Sync>

§

type ModifiedInput = ModifiedInput

§

async fn match_service( &self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8, SM9) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8, SM9) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8, SM9) as ServiceMatcher<Input>>::Error>

§

async fn into_match_service( self, input: Input, ) -> Result<ServiceMatch<<(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8, SM9) as ServiceMatcher<Input>>::ModifiedInput, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8, SM9) as ServiceMatcher<Input>>::Service>, <(SM1, SM2, SM3, SM4, SM5, SM6, SM7, SM8, SM9) as ServiceMatcher<Input>>::Error>
where Input: Send,

Implementors§

§

impl<Input, M> ServiceMatcher<Input> for Arc<M>
where M: ServiceMatcher<Input>,

§

type Service = <M as ServiceMatcher<Input>>::Service

§

type Error = <M as ServiceMatcher<Input>>::Error

§

type ModifiedInput = <M as ServiceMatcher<Input>>::ModifiedInput

§

impl<Input, M, S> ServiceMatcher<Input> for MatcherServicePair<M, S>
where Input: Send + ExtensionsMut + 'static, S: Send + Sync + Clone + 'static, M: Matcher<Input>,

§

type Service = S

§

type Error = Infallible

§

type ModifiedInput = Input

§

impl<Input, ModifiedInput, A, B> ServiceMatcher<Input> for Either<A, B>
where Input: Send + 'static, ModifiedInput: Send + 'static, A: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, B: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <B as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>,

§

type Service = Either<<A as ServiceMatcher<Input>>::Service, <B as ServiceMatcher<Input>>::Service>

§

type Error = <A as ServiceMatcher<Input>>::Error

§

type ModifiedInput = ModifiedInput

§

impl<Input, ModifiedInput, A, B, C> ServiceMatcher<Input> for Either3<A, B, C>
where Input: Send + 'static, ModifiedInput: Send + 'static, A: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, B: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <B as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, C: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <C as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>,

§

type Service = Either3<<A as ServiceMatcher<Input>>::Service, <B as ServiceMatcher<Input>>::Service, <C as ServiceMatcher<Input>>::Service>

§

type Error = <A as ServiceMatcher<Input>>::Error

§

type ModifiedInput = ModifiedInput

§

impl<Input, ModifiedInput, A, B, C, D> ServiceMatcher<Input> for Either4<A, B, C, D>
where Input: Send + 'static, ModifiedInput: Send + 'static, A: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, B: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <B as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, C: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <C as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, D: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <D as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>,

§

type Service = Either4<<A as ServiceMatcher<Input>>::Service, <B as ServiceMatcher<Input>>::Service, <C as ServiceMatcher<Input>>::Service, <D as ServiceMatcher<Input>>::Service>

§

type Error = <A as ServiceMatcher<Input>>::Error

§

type ModifiedInput = ModifiedInput

§

impl<Input, ModifiedInput, A, B, C, D, E> ServiceMatcher<Input> for Either5<A, B, C, D, E>
where Input: Send + 'static, ModifiedInput: Send + 'static, A: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, B: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <B as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, C: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <C as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, D: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <D as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, E: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <E as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>,

§

type Service = Either5<<A as ServiceMatcher<Input>>::Service, <B as ServiceMatcher<Input>>::Service, <C as ServiceMatcher<Input>>::Service, <D as ServiceMatcher<Input>>::Service, <E as ServiceMatcher<Input>>::Service>

§

type Error = <A as ServiceMatcher<Input>>::Error

§

type ModifiedInput = ModifiedInput

§

impl<Input, ModifiedInput, A, B, C, D, E, F> ServiceMatcher<Input> for Either6<A, B, C, D, E, F>
where Input: Send + 'static, ModifiedInput: Send + 'static, A: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, B: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <B as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, C: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <C as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, D: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <D as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, E: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <E as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, F: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <F as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>,

§

type Service = Either6<<A as ServiceMatcher<Input>>::Service, <B as ServiceMatcher<Input>>::Service, <C as ServiceMatcher<Input>>::Service, <D as ServiceMatcher<Input>>::Service, <E as ServiceMatcher<Input>>::Service, <F as ServiceMatcher<Input>>::Service>

§

type Error = <A as ServiceMatcher<Input>>::Error

§

type ModifiedInput = ModifiedInput

§

impl<Input, ModifiedInput, A, B, C, D, E, F, G> ServiceMatcher<Input> for Either7<A, B, C, D, E, F, G>
where Input: Send + 'static, ModifiedInput: Send + 'static, A: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, B: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <B as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, C: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <C as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, D: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <D as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, E: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <E as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, F: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <F as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, G: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <G as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>,

§

type Service = Either7<<A as ServiceMatcher<Input>>::Service, <B as ServiceMatcher<Input>>::Service, <C as ServiceMatcher<Input>>::Service, <D as ServiceMatcher<Input>>::Service, <E as ServiceMatcher<Input>>::Service, <F as ServiceMatcher<Input>>::Service, <G as ServiceMatcher<Input>>::Service>

§

type Error = <A as ServiceMatcher<Input>>::Error

§

type ModifiedInput = ModifiedInput

§

impl<Input, ModifiedInput, A, B, C, D, E, F, G, H> ServiceMatcher<Input> for Either8<A, B, C, D, E, F, G, H>
where Input: Send + 'static, ModifiedInput: Send + 'static, A: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, B: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <B as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, C: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <C as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, D: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <D as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, E: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <E as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, F: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <F as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, G: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <G as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, H: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <H as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>,

§

type Service = Either8<<A as ServiceMatcher<Input>>::Service, <B as ServiceMatcher<Input>>::Service, <C as ServiceMatcher<Input>>::Service, <D as ServiceMatcher<Input>>::Service, <E as ServiceMatcher<Input>>::Service, <F as ServiceMatcher<Input>>::Service, <G as ServiceMatcher<Input>>::Service, <H as ServiceMatcher<Input>>::Service>

§

type Error = <A as ServiceMatcher<Input>>::Error

§

type ModifiedInput = ModifiedInput

§

impl<Input, ModifiedInput, A, B, C, D, E, F, G, H, I> ServiceMatcher<Input> for Either9<A, B, C, D, E, F, G, H, I>
where Input: Send + 'static, ModifiedInput: Send + 'static, A: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, B: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <B as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, C: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <C as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, D: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <D as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, E: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <E as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, F: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <F as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, G: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <G as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, H: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <H as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>, I: ServiceMatcher<Input, ModifiedInput = ModifiedInput>, <I as ServiceMatcher<Input>>::Error: Into<<A as ServiceMatcher<Input>>::Error>,

§

type Service = Either9<<A as ServiceMatcher<Input>>::Service, <B as ServiceMatcher<Input>>::Service, <C as ServiceMatcher<Input>>::Service, <D as ServiceMatcher<Input>>::Service, <E as ServiceMatcher<Input>>::Service, <F as ServiceMatcher<Input>>::Service, <G as ServiceMatcher<Input>>::Service, <H as ServiceMatcher<Input>>::Service, <I as ServiceMatcher<Input>>::Service>

§

type Error = <A as ServiceMatcher<Input>>::Error

§

type ModifiedInput = ModifiedInput

§

impl<Input, SelectedService, Error, ModifiedInput> ServiceMatcher<Input> for BoxServiceMatcher<Input, SelectedService, Error, ModifiedInput>
where Input: 'static, SelectedService: Send + 'static, Error: Send + 'static, ModifiedInput: Send + 'static,

§

type Service = SelectedService

§

type Error = Error

§

type ModifiedInput = ModifiedInput

§

impl<S, Body> ServiceMatcher<Request<Body>> for HttpProxyConnectRelayServiceRequestMatcher<S>
where S: Clone + Send + Sync + 'static, Body: Send + 'static,

§

impl<S, Body> ServiceMatcher<Request<Body>> for HttpWebSocketRelayServiceRequestMatcher<S>
where S: Clone + Send + Sync + 'static, Body: Send + 'static,

§

impl<S, Body> ServiceMatcher<Response<Body>> for HttpProxyConnectRelayServiceResponseMatcher<S>
where S: Clone + Send + Sync + 'static, Body: Send + 'static,

§

impl<S, Body> ServiceMatcher<Response<Body>> for HttpWebSocketRelayServiceResponseMatcher<S>
where S: Clone + Send + Sync + 'static, Body: Send + 'static,