Trait Service
pub trait Service<Input>:
Sized
+ Send
+ Sync
+ 'static {
type Output: Send + 'static;
type Error: Send + 'static;
// Required method
fn serve(
&self,
input: Input,
) -> impl Future<Output = Result<Self::Output, Self::Error>> + Send;
// Provided method
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error> { ... }
}Expand description
A Service that produces rama services,
to serve given an input, be it transport layer Inputs or application layer http requests,
or something else entirely.
Required Associated Types§
Required Methods§
Provided Methods§
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Box this service to allow for dynamic dispatch.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
§impl<S, Input> Service<Input> for &'static Swhere
S: Service<Input>,
impl<S, Input> Service<Input> for &'static Swhere
S: Service<Input>,
Implementors§
§impl Service<AppendRecord> for Collection
impl Service<AppendRecord> for Collection
§impl Service<AppendRecord> for CollectionWriter
impl Service<AppendRecord> for CollectionWriter
§impl Service<AsyncWebSocket> for WebSocketEchoService
impl Service<AsyncWebSocket> for WebSocketEchoService
§impl Service<BridgeIo<Connection, Connection>> for QuicRelay
impl Service<BridgeIo<Connection, Connection>> for QuicRelay
§impl Service<CaptureQuery> for CaptureStore
impl Service<CaptureQuery> for CaptureStore
§impl Service<ConnectRequest> for UdpConnector
impl Service<ConnectRequest> for UdpConnector
type Output = EstablishedClientConnection<UdpPacketSocket, ConnectRequest>
type Error = Box<dyn Error + Send + Sync>
§impl Service<CreateCollection> for FileStore
impl Service<CreateCollection> for FileStore
§impl Service<CreateCollection> for MemoryStore
impl Service<CreateCollection> for MemoryStore
§impl Service<FastCgiClientRequest> for FastCgiTcpConnector
impl Service<FastCgiClientRequest> for FastCgiTcpConnector
§impl Service<FastCgiClientRequest> for FastCgiUnixConnector
impl Service<FastCgiClientRequest> for FastCgiUnixConnector
§impl Service<ListRecords> for Collection
impl Service<ListRecords> for Collection
§impl Service<ListRecords> for CollectionReader
impl Service<ListRecords> for CollectionReader
§impl Service<OptionsRequest> for NoOptionsDiscovery
impl Service<OptionsRequest> for NoOptionsDiscovery
§impl Service<ReadRecord> for Collection
impl Service<ReadRecord> for Collection
§impl Service<ReadRecord> for CollectionReader
impl Service<ReadRecord> for CollectionReader
Source§impl Service<Request> for rama::cli::service::echo::EchoService
Available on crate features cli and haproxy and http and net and std only.
impl Service<Request> for rama::cli::service::echo::EchoService
Available on crate features
cli and haproxy and http and net and std only.§impl Service<SocketAddress> for DefaultAcceptorFactory
impl Service<SocketAddress> for DefaultAcceptorFactory
§impl Service<SocketAddress> for DefaultUdpBinder
impl Service<SocketAddress> for DefaultUdpBinder
§impl Service<SocketAddress> for UdpSocketFactory
impl Service<SocketAddress> for UdpSocketFactory
type Output = UdpPacketSocket
type Error = DatagramError
§impl Service<SystemProxyPacRequest> for SystemPacResolver
impl Service<SystemProxyPacRequest> for SystemPacResolver
§impl Service<Upgraded> for WebSocketEchoService
impl Service<Upgraded> for WebSocketEchoService
§impl Service<Uri> for FetchPacScript
impl Service<Uri> for FetchPacScript
§impl Service<Uri> for StaticPacScript
impl Service<Uri> for StaticPacScript
§impl Service<Uri> for SystemPacProxy
impl Service<Uri> for SystemPacProxy
§impl<A, B, C, D, E, F, G, H, I, Input, Output> Service<Input> for Either9<A, B, C, D, E, F, G, H, I>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
H: Service<Input, Output = Output>,
<H as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
I: Service<Input, Output = Output>,
<I as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, F, G, H, I, Input, Output> Service<Input> for Either9<A, B, C, D, E, F, G, H, I>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
H: Service<Input, Output = Output>,
<H as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
I: Service<Input, Output = Output>,
<I as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, E, F, G, H, I, Input, Output> Service<Input> for EitherConn9Connected<A, B, C, D, E, F, G, H, I>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
H: Service<Input, Output = Output>,
<H as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
I: Service<Input, Output = Output>,
<I as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, F, G, H, I, Input, Output> Service<Input> for EitherConn9Connected<A, B, C, D, E, F, G, H, I>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
H: Service<Input, Output = Output>,
<H as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
I: Service<Input, Output = Output>,
<I as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, E, F, G, H, Input, Output> Service<Input> for Either8<A, B, C, D, E, F, G, H>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
H: Service<Input, Output = Output>,
<H as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, F, G, H, Input, Output> Service<Input> for Either8<A, B, C, D, E, F, G, H>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
H: Service<Input, Output = Output>,
<H as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, E, F, G, H, Input, Output> Service<Input> for EitherConn8Connected<A, B, C, D, E, F, G, H>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
H: Service<Input, Output = Output>,
<H as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, F, G, H, Input, Output> Service<Input> for EitherConn8Connected<A, B, C, D, E, F, G, H>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
H: Service<Input, Output = Output>,
<H as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, E, F, G, Input, Output> Service<Input> for Either7<A, B, C, D, E, F, G>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, F, G, Input, Output> Service<Input> for Either7<A, B, C, D, E, F, G>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, E, F, G, Input, Output> Service<Input> for EitherConn7Connected<A, B, C, D, E, F, G>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, F, G, Input, Output> Service<Input> for EitherConn7Connected<A, B, C, D, E, F, G>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
G: Service<Input, Output = Output>,
<G as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, E, F, Input, Output> Service<Input> for Either6<A, B, C, D, E, F>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, F, Input, Output> Service<Input> for Either6<A, B, C, D, E, F>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, E, F, Input, Output> Service<Input> for EitherConn6Connected<A, B, C, D, E, F>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, F, Input, Output> Service<Input> for EitherConn6Connected<A, B, C, D, E, F>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<Input, Output = Output>,
<F as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, E, Input, Output> Service<Input> for Either5<A, B, C, D, E>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, Input, Output> Service<Input> for Either5<A, B, C, D, E>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, E, Input, Output> Service<Input> for EitherConn5Connected<A, B, C, D, E>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, E, Input, Output> Service<Input> for EitherConn5Connected<A, B, C, D, E>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
E: Service<Input, Output = Output>,
<E as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, Input, Output> Service<Input> for Either4<A, B, C, D>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, Input, Output> Service<Input> for Either4<A, B, C, D>where
A: Service<Input, Output = Output>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<<A as Service<Input>>::Error>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, D, Input, Output> Service<Input> for EitherConn4Connected<A, B, C, D>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, D, Input, Output> Service<Input> for EitherConn4Connected<A, B, C, D>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
D: Service<Input, Output = Output>,
<D as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, C, Input, Output> Service<Input> for EitherConn3Connected<A, B, C>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
impl<A, B, C, Input, Output> Service<Input> for EitherConn3Connected<A, B, C>where
A: Service<Input, Output = Output>,
<A as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
B: Service<Input, Output = Output>,
<B as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: Service<Input, Output = Output>,
<C as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: Send + 'static,
Output: Send + 'static,
§impl<A, B, Input, Output> Service<Input> for EitherConnConnected<A, B>
impl<A, B, Input, Output> Service<Input> for EitherConnConnected<A, B>
§impl<A, B, T, EA, EB> Service<StreamBridge<A, B>> for StreamForwardService
impl<A, B, T, EA, EB> Service<StreamBridge<A, B>> for StreamForwardService
§impl<A, B> Service<BridgeIo<A, B>> for ConnectUdpRelaywhere
A: DatagramSocket,
B: DatagramSocket,
impl<A, B> Service<BridgeIo<A, B>> for ConnectUdpRelaywhere
A: DatagramSocket,
B: DatagramSocket,
§impl<A, B> Service<BridgeIo<A, B>> for DatagramForwardServicewhere
A: DatagramSocket,
B: DatagramSocket,
Forward between two connected sockets, as Peer::connected makes them: a
DatagramToProxyBridge association, for example.
impl<A, B> Service<BridgeIo<A, B>> for DatagramForwardServicewhere
A: DatagramSocket,
B: DatagramSocket,
Forward between two connected sockets, as Peer::connected makes them: a
DatagramToProxyBridge association, for example.
§impl<A, B> Service<BridgeIo<Peer<A>, Peer<B>>> for DatagramForwardServicewhere
A: DatagramSocket,
B: DatagramSocket,
impl<A, B> Service<BridgeIo<Peer<A>, Peer<B>>> for DatagramForwardServicewhere
A: DatagramSocket,
B: DatagramSocket,
§impl<A, C, L, S, ReqBody, ResBody> Service<Request<ReqBody>> for ProxyAuthService<A, C, S, L>
impl<A, C, L, S, ReqBody, ResBody> Service<Request<ReqBody>> for ProxyAuthService<A, C, S, L>
§impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, F, ConnF, G, ConnG, H, ConnH, I, ConnI, Input> Service<Input> for EitherConn9<A, B, C, D, E, F, G, H, I>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
F: ConnectorService<Input, Connection = ConnF>,
ConnF: Send + 'static,
G: ConnectorService<Input, Connection = ConnG>,
ConnG: Send + 'static,
H: ConnectorService<Input, Connection = ConnH>,
ConnH: Send + 'static,
I: ConnectorService<Input, Connection = ConnI>,
ConnI: Send + 'static,
Input: Send + 'static,
impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, F, ConnF, G, ConnG, H, ConnH, I, ConnI, Input> Service<Input> for EitherConn9<A, B, C, D, E, F, G, H, I>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
F: ConnectorService<Input, Connection = ConnF>,
ConnF: Send + 'static,
G: ConnectorService<Input, Connection = ConnG>,
ConnG: Send + 'static,
H: ConnectorService<Input, Connection = ConnH>,
ConnH: Send + 'static,
I: ConnectorService<Input, Connection = ConnI>,
ConnI: Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<EitherConn9Connected<ConnA, ConnB, ConnC, ConnD, ConnE, ConnF, ConnG, ConnH, ConnI>, Input>
type Error = ConnectionError
§impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, F, ConnF, G, ConnG, H, ConnH, Input> Service<Input> for EitherConn8<A, B, C, D, E, F, G, H>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
F: ConnectorService<Input, Connection = ConnF>,
ConnF: Send + 'static,
G: ConnectorService<Input, Connection = ConnG>,
ConnG: Send + 'static,
H: ConnectorService<Input, Connection = ConnH>,
ConnH: Send + 'static,
Input: Send + 'static,
impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, F, ConnF, G, ConnG, H, ConnH, Input> Service<Input> for EitherConn8<A, B, C, D, E, F, G, H>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
F: ConnectorService<Input, Connection = ConnF>,
ConnF: Send + 'static,
G: ConnectorService<Input, Connection = ConnG>,
ConnG: Send + 'static,
H: ConnectorService<Input, Connection = ConnH>,
ConnH: Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<EitherConn8Connected<ConnA, ConnB, ConnC, ConnD, ConnE, ConnF, ConnG, ConnH>, Input>
type Error = ConnectionError
§impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, F, ConnF, G, ConnG, Input> Service<Input> for EitherConn7<A, B, C, D, E, F, G>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
F: ConnectorService<Input, Connection = ConnF>,
ConnF: Send + 'static,
G: ConnectorService<Input, Connection = ConnG>,
ConnG: Send + 'static,
Input: Send + 'static,
impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, F, ConnF, G, ConnG, Input> Service<Input> for EitherConn7<A, B, C, D, E, F, G>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
F: ConnectorService<Input, Connection = ConnF>,
ConnF: Send + 'static,
G: ConnectorService<Input, Connection = ConnG>,
ConnG: Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<EitherConn7Connected<ConnA, ConnB, ConnC, ConnD, ConnE, ConnF, ConnG>, Input>
type Error = ConnectionError
§impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, F, ConnF, Input> Service<Input> for EitherConn6<A, B, C, D, E, F>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
F: ConnectorService<Input, Connection = ConnF>,
ConnF: Send + 'static,
Input: Send + 'static,
impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, F, ConnF, Input> Service<Input> for EitherConn6<A, B, C, D, E, F>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
F: ConnectorService<Input, Connection = ConnF>,
ConnF: Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<EitherConn6Connected<ConnA, ConnB, ConnC, ConnD, ConnE, ConnF>, Input>
type Error = ConnectionError
§impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, Input> Service<Input> for EitherConn5<A, B, C, D, E>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
Input: Send + 'static,
impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, E, ConnE, Input> Service<Input> for EitherConn5<A, B, C, D, E>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
E: ConnectorService<Input, Connection = ConnE>,
ConnE: Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<EitherConn5Connected<ConnA, ConnB, ConnC, ConnD, ConnE>, Input>
type Error = ConnectionError
§impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, Input> Service<Input> for EitherConn4<A, B, C, D>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
Input: Send + 'static,
impl<A, ConnA, B, ConnB, C, ConnC, D, ConnD, Input> Service<Input> for EitherConn4<A, B, C, D>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
D: ConnectorService<Input, Connection = ConnD>,
ConnD: Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<EitherConn4Connected<ConnA, ConnB, ConnC, ConnD>, Input>
type Error = ConnectionError
§impl<A, ConnA, B, ConnB, C, ConnC, Input> Service<Input> for EitherConn3<A, B, C>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
Input: Send + 'static,
impl<A, ConnA, B, ConnB, C, ConnC, Input> Service<Input> for EitherConn3<A, B, C>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
C: ConnectorService<Input, Connection = ConnC>,
ConnC: Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<EitherConn3Connected<ConnA, ConnB, ConnC>, Input>
type Error = ConnectionError
§impl<A, ConnA, B, ConnB, Input> Service<Input> for EitherConn<A, B>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
Input: Send + 'static,
impl<A, ConnA, B, ConnB, Input> Service<Input> for EitherConn<A, B>where
A: ConnectorService<Input, Connection = ConnA>,
ConnA: Send + 'static,
B: ConnectorService<Input, Connection = ConnB>,
ConnB: Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<EitherConnConnected<ConnA, ConnB>, Input>
type Error = ConnectionError
§impl<A, H, R, L, B> Service<Request<B>> for ConnectIpService<A, H, R, L>where
A: Service<ConnectIpRequest<B>, Output = ConnectIpSessionConfig>,
<A as Service<ConnectIpRequest<B>>>::Error: Into<Box<dyn Error + Send + Sync>>,
H: Service<ConnectIpSession, Output = ()>,
<H as Service<ConnectIpSession>>::Error: Into<Box<dyn Error + Send + Sync>>,
R: DnsAddressResolver,
L: AdmitTunnel<Request<B>>,
B: Send + 'static,
impl<A, H, R, L, B> Service<Request<B>> for ConnectIpService<A, H, R, L>where
A: Service<ConnectIpRequest<B>, Output = ConnectIpSessionConfig>,
<A as Service<ConnectIpRequest<B>>>::Error: Into<Box<dyn Error + Send + Sync>>,
H: Service<ConnectIpSession, Output = ()>,
<H as Service<ConnectIpSession>>::Error: Into<Box<dyn Error + Send + Sync>>,
R: DnsAddressResolver,
L: AdmitTunnel<Request<B>>,
B: Send + 'static,
§impl<B, S, Response, IO> Service<IO> for rama::http::server::service::HttpService<B, S>where
B: HttpCoreConnServer,
S: Service<Request, Output = Response, Error = !> + Clone,
Response: IntoResponse + Send + 'static,
IO: Io + ExtensionsRef,
impl<B, S, Response, IO> Service<IO> for rama::http::server::service::HttpService<B, S>where
B: HttpCoreConnServer,
S: Service<Request, Output = Response, Error = !> + Clone,
Response: IntoResponse + Send + 'static,
IO: Io + ExtensionsRef,
Source§impl<Body, ConnectionBody, Connection, IncomingBody, L> Service<Request<Body>> for EasyHttpWebClient<Body, EstablishedClientConnection<Connection, Request<ConnectionBody>>, L>where
Body: StreamingBody<Data: Send + 'static, Error: Into<BoxError>> + Unpin + Send + 'static,
Connection: Service<Request<ConnectionBody>, Output = Response<IncomingBody>, Error = BoxError> + ExtensionsRef,
IncomingBody: Send + Sync + 'static,
Body: From<IncomingBody>,
ConnectionBody: StreamingBody<Data: Send + 'static, Error: Into<BoxError>> + Unpin + Send + 'static,
L: Layer<HttpForwardProxyService<MapResponseBody<Connection, fn(IncomingBody) -> Body>>, Service: Service<Request<ConnectionBody>, Output = Response, Error = BoxError>> + Send + Sync + 'static,
Available on crate features dns and http-backend and http and std and tcp only.
impl<Body, ConnectionBody, Connection, IncomingBody, L> Service<Request<Body>> for EasyHttpWebClient<Body, EstablishedClientConnection<Connection, Request<ConnectionBody>>, L>where
Body: StreamingBody<Data: Send + 'static, Error: Into<BoxError>> + Unpin + Send + 'static,
Connection: Service<Request<ConnectionBody>, Output = Response<IncomingBody>, Error = BoxError> + ExtensionsRef,
IncomingBody: Send + Sync + 'static,
Body: From<IncomingBody>,
ConnectionBody: StreamingBody<Data: Send + 'static, Error: Into<BoxError>> + Unpin + Send + 'static,
L: Layer<HttpForwardProxyService<MapResponseBody<Connection, fn(IncomingBody) -> Body>>, Service: Service<Request<ConnectionBody>, Output = Response, Error = BoxError>> + Send + Sync + 'static,
Available on crate features
dns and http-backend and http and std and tcp only.§impl<Body, ResBody> Service<Request<Body>> for RedirectStatic<ResBody>
impl<Body, ResBody> Service<Request<Body>> for RedirectStatic<ResBody>
§impl<Body, S> Service<Request<Body>> for DnsResolveModeService<S>
impl<Body, S> Service<Request<Body>> for DnsResolveModeService<S>
§impl<Body> Service<Request<Body>> for HttpClientService<Body>
impl<Body> Service<Request<Body>> for HttpClientService<Body>
§impl<Body> Service<Request<Body>> for LazyHttpProxyConnectReplyServicewhere
Body: Send + 'static,
impl<Body> Service<Request<Body>> for LazyHttpProxyConnectReplyServicewhere
Body: Send + 'static,
§impl<Body> Service<Request<Body>> for WebSocketAcceptorwhere
Body: Send + 'static,
impl<Body> Service<Request<Body>> for WebSocketAcceptorwhere
Body: Send + 'static,
§impl<C, B, U, A, S> Service<S> for Socks5Acceptor<C, B, U, A>where
C: Socks5Connector<S>,
U: Socks5UdpAssociator<S>,
A: Authorizer<Basic>,
<A as Authorizer<Basic>>::Error: Debug,
B: Socks5Binder<S>,
S: Io + Unpin + ExtensionsRef,
impl<C, B, U, A, S> Service<S> for Socks5Acceptor<C, B, U, A>where
C: Socks5Connector<S>,
U: Socks5UdpAssociator<S>,
A: Authorizer<Basic>,
<A as Authorizer<Basic>>::Error: Debug,
B: Socks5Binder<S>,
S: Io + Unpin + ExtensionsRef,
§impl<C, IO> Service<OptionsRequest> for OptionsService<C>where
C: ConnectorService<ConnectRequest, Connection = ClientConnection<IO>>,
IO: Io + Unpin + ExtensionsRef,
impl<C, IO> Service<OptionsRequest> for OptionsService<C>where
C: ConnectorService<ConnectRequest, Connection = ClientConnection<IO>>,
IO: Io + Unpin + ExtensionsRef,
§impl<C, Input> Service<Input> for TtrpcConnector<C>where
C: ConnectorService<Input>,
<C as ConnectorService<Input>>::Connection: Io,
Input: Send + 'static,
impl<C, Input> Service<Input> for TtrpcConnector<C>where
C: ConnectorService<Input>,
<C as ConnectorService<Input>>::Connection: Io,
Input: Send + 'static,
type Output = EstablishedClientConnection<Client, Input>
type Error = ConnectionError
§impl<C, ReqBody, RespBody> Service<Request<ReqBody>> for BindBodyToConn<C>
impl<C, ReqBody, RespBody> Service<Request<ReqBody>> for BindBodyToConn<C>
§impl<C, S, Body> Service<Request<Body>> for EagerHttpProxyConnector<C, S>where
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: Io + Unpin,
S: Service<BridgeIo<Upgraded, <C as ConnectorService<ConnectRequest>>::Connection>> + Clone,
<S as Service<BridgeIo<Upgraded, <C as ConnectorService<ConnectRequest>>::Connection>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Body: Send + 'static,
impl<C, S, Body> Service<Request<Body>> for EagerHttpProxyConnector<C, S>where
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: Io + Unpin,
S: Service<BridgeIo<Upgraded, <C as ConnectorService<ConnectRequest>>::Connection>> + Clone,
<S as Service<BridgeIo<Upgraded, <C as ConnectorService<ConnectRequest>>::Connection>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Body: Send + 'static,
§impl<C, S, Response> Service<C> for rama::http::server::service::HttpService<Config, S>where
C: Connection,
S: Service<Request, Output = Response, Error = !> + Clone,
Response: IntoResponse + Send + 'static,
Available on crate feature quic only.
impl<C, S, Response> Service<C> for rama::http::server::service::HttpService<Config, S>where
C: Connection,
S: Service<Request, Output = Response, Error = !> + Clone,
Response: IntoResponse + Send + 'static,
Available on crate feature
quic only.§impl<C> Service<ConnectRequest> for QuicEndpointConnector<C>where
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: DatagramSocket,
impl<C> Service<ConnectRequest> for QuicEndpointConnector<C>where
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: DatagramSocket,
§impl<C> Service<Request> for Http3EgressService<C>where
C: ReserveBiStreams,
impl<C> Service<Request> for Http3EgressService<C>where
C: ReserveBiStreams,
§impl<E> Service<ConnectRequest> for Http3Connector<E>
impl<E> Service<ConnectRequest> for Http3Connector<E>
§impl<E> Service<ConnectRequest> for QuicConnector<E>
impl<E> Service<ConnectRequest> for QuicConnector<E>
type Output = EstablishedClientConnection<Connection, ConnectRequest>
type Error = ConnectionError
§impl<F, S, ReqBody, ResBody, NewReqBody> Service<Request<ReqBody>> for MapRequestBody<S, F>
impl<F, S, ReqBody, ResBody, NewReqBody> Service<Request<ReqBody>> for MapRequestBody<S, F>
§impl<F, S, ReqBody, ResBody, NewResBody> Service<Request<ReqBody>> for MapResponseBody<S, F>
impl<F, S, ReqBody, ResBody, NewResBody> Service<Request<ReqBody>> for MapResponseBody<S, F>
§impl<F, T, State> Service<Request> for EndpointServiceFnWrapper<F, T, State>
impl<F, T, State> Service<Request> for EndpointServiceFnWrapper<F, T, State>
§impl<H, S, Body> Service<Request<Body>> for GetForwardedHeaderService<S, H>
impl<H, S, Body> Service<Request<Body>> for GetForwardedHeaderService<S, H>
§impl<I, E, M, P, D> Service<BridgeIo<I, E>> for Http3MitmRelay<M, P, D>where
I: Connection,
E: ReserveBiStreams,
(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>): Layer<Http3EgressService<E>> + Clone,
<(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>) as Layer<Http3EgressService<E>>>::Service: Service<Request, Output = Response> + Clone,
<<(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>) as Layer<Http3EgressService<E>>>::Service as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>>,
M: Send + Sync + 'static + Clone,
P: Matcher<Request> + Clone,
D: Service<BridgeIo<Upgraded, Upgraded>> + Clone,
<D as Service<BridgeIo<Upgraded, Upgraded>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<I, E, M, P, D> Service<BridgeIo<I, E>> for Http3MitmRelay<M, P, D>where
I: Connection,
E: ReserveBiStreams,
(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>): Layer<Http3EgressService<E>> + Clone,
<(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>) as Layer<Http3EgressService<E>>>::Service: Service<Request, Output = Response> + Clone,
<<(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>) as Layer<Http3EgressService<E>>>::Service as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>>,
M: Send + Sync + 'static + Clone,
P: Matcher<Request> + Clone,
D: Service<BridgeIo<Upgraded, Upgraded>> + Clone,
<D as Service<BridgeIo<Upgraded, Upgraded>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<I, F, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for Socks5MitmRelayService<I, F>where
I: Service<BridgeIo<Ingress, Egress>>,
<I as Service<BridgeIo<Ingress, Egress>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<BridgeIo<Ingress, Egress>>,
<F as Service<BridgeIo<Ingress, Egress>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
impl<I, F, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for Socks5MitmRelayService<I, F>where
I: Service<BridgeIo<Ingress, Egress>>,
<I as Service<BridgeIo<Ingress, Egress>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<BridgeIo<Ingress, Egress>>,
<F as Service<BridgeIo<Ingress, Egress>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
§impl<I, K, S, F, O> Service<I> for PeekQuicClientHelloService<K, S, F>where
I: DatagramPeekInput,
<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>: ExtensionsRef,
K: KeyProvider + Send + Sync + 'static,
S: Service<InputWithQuicClientHello<<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>>, Output = O>,
<S as Service<InputWithQuicClientHello<<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>, Output = O>,
<F as Service<<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
O: Send + 'static,
impl<I, K, S, F, O> Service<I> for PeekQuicClientHelloService<K, S, F>where
I: DatagramPeekInput,
<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>: ExtensionsRef,
K: KeyProvider + Send + Sync + 'static,
S: Service<InputWithQuicClientHello<<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>>, Output = O>,
<S as Service<InputWithQuicClientHello<<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>, Output = O>,
<F as Service<<I as DatagramPeekInput>::Mapped<PrefixedDatagramSocket<<I as DatagramPeekInput>::Socket>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
O: Send + 'static,
§impl<I, O> Service<I> for StaticOutput<O>
impl<I, O> Service<I> for StaticOutput<O>
§impl<I, P, Input> Service<Input> for InspectionGate<I, P>
impl<I, P, Input> Service<Input> for InspectionGate<I, P>
§impl<I, S> Service<I> for QuicAdmissionService<S>
impl<I, S> Service<I> for QuicAdmissionService<S>
§impl<Ingress, Egress, M, P> Service<BridgeIo<Ingress, Egress>> for HttpMitmRelay<M, P>where
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>): Layer<HttpClientService<Body>> + Clone,
<(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>) as Layer<HttpClientService<Body>>>::Service: Service<Request, Output = Response> + Clone,
<<(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>) as Layer<HttpClientService<Body>>>::Service as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>>,
M: Send + Sync + 'static + Clone,
P: Matcher<Request> + Clone,
impl<Ingress, Egress, M, P> Service<BridgeIo<Ingress, Egress>> for HttpMitmRelay<M, P>where
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>): Layer<HttpClientService<Body>> + Clone,
<(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>) as Layer<HttpClientService<Body>>>::Service: Service<Request, Output = Response> + Clone,
<<(RemoveRequestHeaderLayer, M, RemoveResponseHeaderLayer, ValidateRequestHeaderLayer<Option<BoundAuthority<P>>>) as Layer<HttpClientService<Body>>>::Service as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>>,
M: Send + Sync + 'static + Clone,
P: Matcher<Request> + Clone,
§impl<Inner, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for HARWebSocketService<Inner>where
Inner: Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
impl<Inner, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for HARWebSocketService<Inner>where
Inner: Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
type Output = <Inner as Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>>::Output
type Error = <Inner as Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>>::Error
§impl<Inner, Socket> Service<ClientWebSocket<Socket>> for HARWebSocketService<Inner>
impl<Inner, Socket> Service<ClientWebSocket<Socket>> for HARWebSocketService<Inner>
type Output = <Inner as Service<ClientWebSocket<HARWebSocket<Socket>>>>::Output
type Error = <Inner as Service<ClientWebSocket<HARWebSocket<Socket>>>>::Error
§impl<Inner, Socket> Service<ServerWebSocket<Socket>> for HARWebSocketService<Inner>
impl<Inner, Socket> Service<ServerWebSocket<Socket>> for HARWebSocketService<Inner>
type Output = <Inner as Service<ServerWebSocket<HARWebSocket<Socket>>>>::Output
type Error = <Inner as Service<ServerWebSocket<HARWebSocket<Socket>>>>::Error
§impl<Input, C, ID> Service<Input> for LeasedConnection<C, ID>where
ID: Send + Sync + Debug + 'static,
C: Service<Input> + ExtensionsRef,
Input: ExtensionsMut + Send + 'static,
impl<Input, C, ID> Service<Input> for LeasedConnection<C, ID>where
ID: Send + Sync + Debug + 'static,
C: Service<Input> + ExtensionsRef,
Input: ExtensionsMut + Send + 'static,
§impl<Input, C, ID> Service<Input> for MultiplexedConnection<C, ID>where
C: Service<Input> + ExtensionsRef,
ID: Send + Sync + 'static,
Input: ExtensionsMut + Send + 'static,
impl<Input, C, ID> Service<Input> for MultiplexedConnection<C, ID>where
C: Service<Input> + ExtensionsRef,
ID: Send + Sync + 'static,
Input: ExtensionsMut + Send + 'static,
§impl<Input, ConnectorFactory> Service<Input> for UnixConnector<ConnectorFactory>where
Input: Send + 'static,
ConnectorFactory: UnixStreamConnectorFactory + Clone,
<ConnectorFactory as UnixStreamConnectorFactory>::Connector: UnixStreamConnector,
<<ConnectorFactory as UnixStreamConnectorFactory>::Connector as UnixStreamConnector>::Error: Into<Box<dyn Error + Send + Sync>> + Send + 'static,
<ConnectorFactory as UnixStreamConnectorFactory>::Error: Into<Box<dyn Error + Send + Sync>> + Send + 'static,
impl<Input, ConnectorFactory> Service<Input> for UnixConnector<ConnectorFactory>where
Input: Send + 'static,
ConnectorFactory: UnixStreamConnectorFactory + Clone,
<ConnectorFactory as UnixStreamConnectorFactory>::Connector: UnixStreamConnector,
<<ConnectorFactory as UnixStreamConnectorFactory>::Connector as UnixStreamConnector>::Error: Into<Box<dyn Error + Send + Sync>> + Send + 'static,
<ConnectorFactory as UnixStreamConnectorFactory>::Error: Into<Box<dyn Error + Send + Sync>> + Send + 'static,
type Output = EstablishedClientConnection<UnixStream, Input>
type Error = ConnectionError
§impl<Input, Output, Error> Service<Input> for BoxService<Input, Output, Error>
impl<Input, Output, Error> Service<Input> for BoxService<Input, Output, Error>
§impl<Input, Output, Error> Service<Input> for RejectService<Output, Error>
impl<Input, Output, Error> Service<Input> for RejectService<Output, Error>
§impl<Input, S, F, O> Service<Input> for AlpnRouter<S, F>
impl<Input, S, F, O> Service<Input> for AlpnRouter<S, F>
§impl<Input, S, P, R> Service<Input> for PooledConnector<S, P, R>where
S: ConnectorService<Input>,
Input: Send + ExtensionsRef + 'static,
P: Pool<<S as ConnectorService<Input>>::Connection, <R as ReqToConnID<Input>>::ID> + Extension,
R: ReqToConnID<Input>,
impl<Input, S, P, R> Service<Input> for PooledConnector<S, P, R>where
S: ConnectorService<Input>,
Input: Send + ExtensionsRef + 'static,
P: Pool<<S as ConnectorService<Input>>::Connection, <R as ReqToConnID<Input>>::ID> + Extension,
R: ReqToConnID<Input>,
type Output = EstablishedClientConnection<<P as Pool<<S as ConnectorService<Input>>::Connection, <R as ReqToConnID<Input>>::ID>>::Connection, Input>
type Error = ConnectionError
§impl<Input, S, T, F> Service<Input> for GetInputExtensionRef<S, T, F>
impl<Input, S, T, F> Service<Input> for GetInputExtensionRef<S, T, F>
§impl<Input, S, T, F> Service<Input> for GetOutputExtensionRef<S, T, F>
impl<Input, S, T, F> Service<Input> for GetOutputExtensionRef<S, T, F>
§impl<Input, S, T, Fut, F> Service<Input> for GetInputExtensionOwned<S, T, Fut, F>
impl<Input, S, T, Fut, F> Service<Input> for GetInputExtensionOwned<S, T, Fut, F>
§impl<Input, S, T, Fut, F> Service<Input> for GetOutputExtensionOwned<S, T, Fut, F>
impl<Input, S, T, Fut, F> Service<Input> for GetOutputExtensionOwned<S, T, Fut, F>
§impl<Input, S, T> Service<Input> for AddInputExtension<S, T>
impl<Input, S, T> Service<Input> for AddInputExtension<S, T>
§impl<Input, S, T> Service<Input> for AddOutputExtension<S, T>
impl<Input, S, T> Service<Input> for AddOutputExtension<S, T>
Source§impl<Input, S> Service<Input> for ProxyConnector<S>where
S: ConnectorService<Input, Connection: Io + Unpin>,
Input: AuthorityInputExt + ProtocolInputExt + HttpVersionInputExt + TargetHttpVersionInputExt + Send + ExtensionsRef + 'static,
Available on crate features dns and http-backend and http and std and tcp only.
impl<Input, S> Service<Input> for ProxyConnector<S>where
S: ConnectorService<Input, Connection: Io + Unpin>,
Input: AuthorityInputExt + ProtocolInputExt + HttpVersionInputExt + TargetHttpVersionInputExt + Send + ExtensionsRef + 'static,
Available on crate features
dns and http-backend and http and std and tcp only.type Output = EstablishedClientConnection<MaybeProxiedConnection<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<Input, StreamConnector> Service<Input> for TcpConnector<StreamConnector>where
Input: ConnectorTargetInputExt + ConnectorTransportProtocolInputExt + Send + 'static,
StreamConnector: TcpStreamConnector + Send + 'static,
<StreamConnector as TcpStreamConnector>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<Input, StreamConnector> Service<Input> for TcpConnector<StreamConnector>where
Input: ConnectorTargetInputExt + ConnectorTransportProtocolInputExt + Send + 'static,
StreamConnector: TcpStreamConnector + Send + 'static,
<StreamConnector as TcpStreamConnector>::Error: Into<Box<dyn Error + Send + Sync>>,
type Output = EstablishedClientConnection<TcpStream, Input>
type Error = ConnectionError
§impl<Input, T> Service<Input> for PathRouter<T>
impl<Input, T> Service<Input> for PathRouter<T>
§impl<Input> Service<Input> for MirrorServicewhere
Input: Send + 'static,
impl<Input> Service<Input> for MirrorServicewhere
Input: Send + 'static,
§impl<Issuer, Inner, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for TlsMitmRelayService<Issuer, Inner>where
Issuer: BoringMitmCertIssuer,
<Issuer as BoringMitmCertIssuer>::Error: Into<Box<dyn Error + Send + Sync>>,
Inner: Service<BridgeIo<TlsStream<Ingress>, TlsStream<Egress>>>,
<Inner as Service<BridgeIo<TlsStream<Ingress>, TlsStream<Egress>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
impl<Issuer, Inner, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for TlsMitmRelayService<Issuer, Inner>where
Issuer: BoringMitmCertIssuer,
<Issuer as BoringMitmCertIssuer>::Error: Into<Box<dyn Error + Send + Sync>>,
Inner: Service<BridgeIo<TlsStream<Ingress>, TlsStream<Egress>>>,
<Inner as Service<BridgeIo<TlsStream<Ingress>, TlsStream<Egress>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
§impl<Issuer, Inner, Ingress, Egress> Service<InputWithClientHello<BridgeIo<Ingress, Egress>>> for TlsMitmRelayService<Issuer, Inner>where
Issuer: BoringMitmCertIssuer,
<Issuer as BoringMitmCertIssuer>::Error: Into<Box<dyn Error + Send + Sync>>,
Inner: Service<BridgeIo<TlsStream<Ingress>, TlsStream<Egress>>>,
<Inner as Service<BridgeIo<TlsStream<Ingress>, TlsStream<Egress>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
impl<Issuer, Inner, Ingress, Egress> Service<InputWithClientHello<BridgeIo<Ingress, Egress>>> for TlsMitmRelayService<Issuer, Inner>where
Issuer: BoringMitmCertIssuer,
<Issuer as BoringMitmCertIssuer>::Error: Into<Box<dyn Error + Send + Sync>>,
Inner: Service<BridgeIo<TlsStream<Ingress>, TlsStream<Egress>>>,
<Inner as Service<BridgeIo<TlsStream<Ingress>, TlsStream<Egress>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
§impl<Issuer, S, Ingress, Egress> Service<InputWithQuicClientHello<BridgeIo<Ingress, Egress>>> for QuicMitmRelayService<Issuer, S>where
Issuer: BoringMitmCertIssuer + Clone,
<Issuer as BoringMitmCertIssuer>::Error: Into<Box<dyn Error + Send + Sync>>,
S: Service<BridgeIo<Connection, Connection>>,
<S as Service<BridgeIo<Connection, Connection>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: DatagramSocket + ExtensionsRef,
Egress: DatagramSocket,
impl<Issuer, S, Ingress, Egress> Service<InputWithQuicClientHello<BridgeIo<Ingress, Egress>>> for QuicMitmRelayService<Issuer, S>where
Issuer: BoringMitmCertIssuer + Clone,
<Issuer as BoringMitmCertIssuer>::Error: Into<Box<dyn Error + Send + Sync>>,
S: Service<BridgeIo<Connection, Connection>>,
<S as Service<BridgeIo<Connection, Connection>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: DatagramSocket + ExtensionsRef,
Egress: DatagramSocket,
§impl<L, R> Service<BridgeIo<L, R>> for HttpDatagramRelay
impl<L, R> Service<BridgeIo<L, R>> for HttpDatagramRelay
type Output = DatagramRelayOutcome
type Error = SessionError
§impl<M, S, ReqBody, ModReqBody, ResBody, ModResBody> Service<Request<ReqBody>> for HttpUpgradeMitmRelay<M, S>where
<M as ServiceMatcher<Request<ReqBody>>>::Error: IntoResponse,
<M as ServiceMatcher<Request<ReqBody>>>::Service: ServiceMatcher<Response<ResBody>, ModifiedInput = Response<ModResBody>>,
<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Error: Into<<S as Service<Request>>::Error>,
<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Service: Service<BridgeIo<Upgraded, Upgraded>>,
<<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Service as Service<BridgeIo<Upgraded, Upgraded>>>::Error: Into<Box<dyn Error + Send + Sync>>,
S: Service<Request, Output = Response<ResBody>>,
ReqBody: Body<Data = Bytes> + Send + Sync + 'static,
<ReqBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ModReqBody: Body<Data = Bytes> + Send + Sync + 'static,
<ModReqBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ResBody: Body<Data = Bytes> + Send + Sync + 'static,
<ResBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ModResBody: Body<Data = Bytes> + Send + Sync + 'static,
M: ServiceMatcher<Request<ReqBody>, ModifiedInput = Request<ModReqBody>>,
<ModResBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<M, S, ReqBody, ModReqBody, ResBody, ModResBody> Service<Request<ReqBody>> for HttpUpgradeMitmRelay<M, S>where
<M as ServiceMatcher<Request<ReqBody>>>::Error: IntoResponse,
<M as ServiceMatcher<Request<ReqBody>>>::Service: ServiceMatcher<Response<ResBody>, ModifiedInput = Response<ModResBody>>,
<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Error: Into<<S as Service<Request>>::Error>,
<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Service: Service<BridgeIo<Upgraded, Upgraded>>,
<<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Service as Service<BridgeIo<Upgraded, Upgraded>>>::Error: Into<Box<dyn Error + Send + Sync>>,
S: Service<Request, Output = Response<ResBody>>,
ReqBody: Body<Data = Bytes> + Send + Sync + 'static,
<ReqBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ModReqBody: Body<Data = Bytes> + Send + Sync + 'static,
<ModReqBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ResBody: Body<Data = Bytes> + Send + Sync + 'static,
<ResBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ModResBody: Body<Data = Bytes> + Send + Sync + 'static,
M: ServiceMatcher<Request<ReqBody>, ModifiedInput = Request<ModReqBody>>,
<ModResBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<M, S, ReqBody, ResBody> Service<Request<ReqBody>> for BodyCaptureService<M, S>where
M: MakeBodyCaptureSink,
S: Service<Request, Output = Response<ResBody>>,
ReqBody: Body<Data = Bytes> + Send + Sync + 'static,
<ReqBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ResBody: Body<Data = Bytes> + Send + Sync + 'static,
<ResBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<M, S, ReqBody, ResBody> Service<Request<ReqBody>> for BodyCaptureService<M, S>where
M: MakeBodyCaptureSink,
S: Service<Request, Output = Response<ResBody>>,
ReqBody: Body<Data = Bytes> + Send + Sync + 'static,
<ReqBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ResBody: Body<Data = Bytes> + Send + Sync + 'static,
<ResBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, M_T9, T9, M_T10, T10, M_T11, T11, M_T12, T12, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), (M_T9, T9), (M_T10, T10), (M_T11, T11), (M_T12, T12), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
M_T9: Matcher<Input>,
T9: Service<Input, Output = Output, Error = Error>,
M_T10: Matcher<Input>,
T10: Service<Input, Output = Output, Error = Error>,
M_T11: Matcher<Input>,
T11: Service<Input, Output = Output, Error = Error>,
M_T12: Matcher<Input>,
T12: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, M_T9, T9, M_T10, T10, M_T11, T11, M_T12, T12, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), (M_T9, T9), (M_T10, T10), (M_T11, T11), (M_T12, T12), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
M_T9: Matcher<Input>,
T9: Service<Input, Output = Output, Error = Error>,
M_T10: Matcher<Input>,
T10: Service<Input, Output = Output, Error = Error>,
M_T11: Matcher<Input>,
T11: Service<Input, Output = Output, Error = Error>,
M_T12: Matcher<Input>,
T12: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, M_T9, T9, M_T10, T10, M_T11, T11, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), (M_T9, T9), (M_T10, T10), (M_T11, T11), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
M_T9: Matcher<Input>,
T9: Service<Input, Output = Output, Error = Error>,
M_T10: Matcher<Input>,
T10: Service<Input, Output = Output, Error = Error>,
M_T11: Matcher<Input>,
T11: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, M_T9, T9, M_T10, T10, M_T11, T11, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), (M_T9, T9), (M_T10, T10), (M_T11, T11), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
M_T9: Matcher<Input>,
T9: Service<Input, Output = Output, Error = Error>,
M_T10: Matcher<Input>,
T10: Service<Input, Output = Output, Error = Error>,
M_T11: Matcher<Input>,
T11: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, M_T9, T9, M_T10, T10, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), (M_T9, T9), (M_T10, T10), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
M_T9: Matcher<Input>,
T9: Service<Input, Output = Output, Error = Error>,
M_T10: Matcher<Input>,
T10: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, M_T9, T9, M_T10, T10, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), (M_T9, T9), (M_T10, T10), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
M_T9: Matcher<Input>,
T9: Service<Input, Output = Output, Error = Error>,
M_T10: Matcher<Input>,
T10: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, M_T9, T9, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), (M_T9, T9), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
M_T9: Matcher<Input>,
T9: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, M_T9, T9, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), (M_T9, T9), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
M_T9: Matcher<Input>,
T9: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, M_T8, T8, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), (M_T8, T8), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
M_T8: Matcher<Input>,
T8: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, M_T7, T7, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), (M_T7, T7), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
M_T7: Matcher<Input>,
T7: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, M_T6, T6, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), (M_T6, T6), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
M_T6: Matcher<Input>,
T6: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, M_T5, T5, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), (M_T5, T5), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
M_T5: Matcher<Input>,
T5: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, M_T4, T4, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), (M_T4, T4), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
M_T4: Matcher<Input>,
T4: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, M_T3, T3, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
impl<M_T1, T1, M_T2, T2, M_T3, T3, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), (M_T3, T3), S)>where
Input: Send + ExtensionsRef + 'static,
Output: Send + 'static,
M_T1: Matcher<Input>,
T1: Service<Input, Output = Output, Error = Error>,
M_T2: Matcher<Input>,
T2: Service<Input, Output = Output, Error = Error>,
M_T3: Matcher<Input>,
T3: Service<Input, Output = Output, Error = Error>,
S: Service<Input, Output = Output, Error = Error>,
Error: Send + 'static,
§impl<M_T1, T1, M_T2, T2, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), S)>
impl<M_T1, T1, M_T2, T2, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), (M_T2, T2), S)>
§impl<M_T1, T1, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), S)>
impl<M_T1, T1, S, Input, Output, Error> Service<Input> for MatcherRouter<((M_T1, T1), S)>
§impl<P, R, C, F, S> Service<Request> for ConnectUdpService<P, R, C, F>where
P: ConnectUdpPolicy,
R: DnsAddressResolver,
C: ConnectorService<ConnectRequest, Connection = S>,
S: DatagramSocket,
F: Service<BridgeIo<ConnectUdpSocket, S>, Output = ()>,
<F as Service<BridgeIo<ConnectUdpSocket, S>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<P, R, C, F, S> Service<Request> for ConnectUdpService<P, R, C, F>where
P: ConnectUdpPolicy,
R: DnsAddressResolver,
C: ConnectorService<ConnectRequest, Connection = S>,
S: DatagramSocket,
F: Service<BridgeIo<ConnectUdpSocket, S>, Output = ()>,
<F as Service<BridgeIo<ConnectUdpSocket, S>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<P, S, Body> Service<Request<Body>> for Retry<P, S>where
P: Policy<<S as Service<Request<RetryBody>>>::Output, <S as Service<Request<RetryBody>>>::Error>,
S: Service<Request<RetryBody>>,
<S as Service<Request<RetryBody>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Body: Body + Send + 'static,
<Body as Body>::Data: Send + 'static,
<Body as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<P, S, Body> Service<Request<Body>> for Retry<P, S>where
P: Policy<<S as Service<Request<RetryBody>>>::Output, <S as Service<Request<RetryBody>>>::Error>,
S: Service<Request<RetryBody>>,
<S as Service<Request<RetryBody>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Body: Body + Send + 'static,
<Body as Body>::Data: Send + 'static,
<Body as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<PeekableInput, Output, P, T, F> Service<PeekableInput> for PeekRouter<P, T, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
P: Fn(&[u8]) -> PeekVerdict<()> + Send + Sync + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<PeekableInput, Output, P, T, F> Service<PeekableInput> for PeekRouter<P, T, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
P: Fn(&[u8]) -> PeekVerdict<()> + Send + Sync + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<PeekableInput, Output, S, F> Service<PeekableInput> for PeekTlsClientHelloService<S, F>where
PeekableInput: PeekIoProvider + ExtensionsRef,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
S: Service<InputWithClientHello<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<HeapReader, <PeekableInput as PeekIoProvider>::PeekIo>>>, Output = Output>,
<S as Service<InputWithClientHello<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<HeapReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<HeapReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<HeapReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<PeekableInput, Output, S, F> Service<PeekableInput> for PeekTlsClientHelloService<S, F>where
PeekableInput: PeekIoProvider + ExtensionsRef,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
S: Service<InputWithClientHello<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<HeapReader, <PeekableInput as PeekIoProvider>::PeekIo>>>, Output = Output>,
<S as Service<InputWithClientHello<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<HeapReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<HeapReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<HeapReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<PeekableInput, Output, T, F> Service<PeekableInput> for HttpPeekRouter<H2Acceptor<T>, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<PeekableInput, Output, T, F> Service<PeekableInput> for HttpPeekRouter<H2Acceptor<T>, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<PeekableInput, Output, T, F> Service<PeekableInput> for HttpPeekRouter<Http1Acceptor<T>, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<PeekableInput, Output, T, F> Service<PeekableInput> for HttpPeekRouter<Http1Acceptor<T>, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<PeekableInput, Output, T, F> Service<PeekableInput> for HttpPeekRouter<HttpAutoAcceptor<T>, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<PeekableInput, Output, T, F> Service<PeekableInput> for HttpPeekRouter<HttpAutoAcceptor<T>, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<PeekableInput, Output, T, F> Service<PeekableInput> for Socks5PeekRouter<T, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_socks5::::server::peek::Socks5PrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_socks5::::server::peek::Socks5PrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_socks5::::server::peek::Socks5PrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_socks5::::server::peek::Socks5PrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<PeekableInput, Output, T, F> Service<PeekableInput> for Socks5PeekRouter<T, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_socks5::::server::peek::Socks5PrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_socks5::::server::peek::Socks5PrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_socks5::::server::peek::Socks5PrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_socks5::::server::peek::Socks5PrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<PeekableInput, Output, T, F> Service<PeekableInput> for TlsPeekRouter<T, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_tls::::server::peek::TlsPrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_tls::::server::peek::TlsPrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_tls::::server::peek::TlsPrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_tls::::server::peek::TlsPrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<PeekableInput, Output, T, F> Service<PeekableInput> for TlsPeekRouter<T, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_tls::::server::peek::TlsPrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_tls::::server::peek::TlsPrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_tls::::server::peek::TlsPrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<StackReader<rama_tls::::server::peek::TlsPrefixedIo::{constant#0}>, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<PeekableInput, Output, T, U, F> Service<PeekableInput> for HttpPeekRouter<HttpDualAcceptor<T, U>, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
U: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<U as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<PeekableInput, Output, T, U, F> Service<PeekableInput> for HttpPeekRouter<HttpDualAcceptor<T, U>, F>where
PeekableInput: PeekIoProvider,
<PeekableInput as PeekIoProvider>::PeekIo: Unpin,
Output: Send + 'static,
T: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<T as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
U: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<U as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
F: Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>, Output = Output>,
<F as Service<<PeekableInput as PeekIoProvider>::Mapped<PrefixedIo<ReplayReader, <PeekableInput as PeekIoProvider>::PeekIo>>>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<R, Body> Service<Request<Body>> for RedirectHttpToHttps<R>
impl<R, Body> Service<Request<Body>> for RedirectHttpToHttps<R>
§impl<R, S, W, ReqBody, ResBody> Service<Request<ReqBody>> for HARExportService<R, S, W>where
R: StreamingRecorder,
S: Service<Request, Output = Response<ResBody>>,
<S as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>> + Send + Sync + 'static,
W: Toggle,
ReqBody: Body<Data = Bytes> + Send + Sync + 'static,
<ReqBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ResBody: Body<Data = Bytes> + Send + Sync + 'static,
<ResBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<R, S, W, ReqBody, ResBody> Service<Request<ReqBody>> for HARExportService<R, S, W>where
R: StreamingRecorder,
S: Service<Request, Output = Response<ResBody>>,
<S as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>> + Send + Sync + 'static,
W: Toggle,
ReqBody: Body<Data = Bytes> + Send + Sync + 'static,
<ReqBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ResBody: Body<Data = Bytes> + Send + Sync + 'static,
<ResBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<ReqBody, R, S> Service<Request<ReqBody>> for RewriteUriService<R, S>
impl<ReqBody, R, S> Service<Request<ReqBody>> for RewriteUriService<R, S>
§impl<ReqBody, ResBody, R, S> Service<Request<ReqBody>> for UriMatchRedirectService<R, S>
impl<ReqBody, ResBody, R, S> Service<Request<ReqBody>> for UriMatchRedirectService<R, S>
§impl<ReqBody, ResBody, S, M> Service<Request<ReqBody>> for SetRequestHeader<S, M>
impl<ReqBody, ResBody, S, M> Service<Request<ReqBody>> for SetRequestHeader<S, M>
§impl<ReqBody, ResBody, S, M> Service<Request<ReqBody>> for SetResponseHeader<S, M>
impl<ReqBody, ResBody, S, M> Service<Request<ReqBody>> for SetResponseHeader<S, M>
§impl<ReqBody, ResBody, S, P> Service<Request<ReqBody>> for Compression<S, P>
impl<ReqBody, ResBody, S, P> Service<Request<ReqBody>> for Compression<S, P>
§impl<ReqBody, ResBody, S, P> Service<Request<ReqBody>> for FollowRedirect<S, P>
impl<ReqBody, ResBody, S, P> Service<Request<ReqBody>> for FollowRedirect<S, P>
§impl<ReqBody, ResBody, S, P> Service<Request<ReqBody>> for StreamCompression<S, P>
impl<ReqBody, ResBody, S, P> Service<Request<ReqBody>> for StreamCompression<S, P>
§impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for AddRequiredRequestHeaders<S>
impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for AddRequiredRequestHeaders<S>
§impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for AddRequiredResponseHeaders<S>
impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for AddRequiredResponseHeaders<S>
§impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for PropagateHeader<S>
impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for PropagateHeader<S>
§impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for RemoveRequestHeader<S>
impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for RemoveRequestHeader<S>
§impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for RemoveResponseHeader<S>
impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for RemoveResponseHeader<S>
§impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for SetSensitiveRequestHeaders<S>
impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for SetSensitiveRequestHeaders<S>
§impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for SetSensitiveResponseHeaders<S>
impl<ReqBody, ResBody, S> Service<Request<ReqBody>> for SetSensitiveResponseHeaders<S>
§impl<ReqBody, ServiceResBody, ValidateResBody, S, V> Service<Request<ReqBody>> for ValidateRequestHeader<S, V>
impl<ReqBody, ServiceResBody, ValidateResBody, S, V> Service<Request<ReqBody>> for ValidateRequestHeader<S, V>
§impl<ReqBody> Service<Request<ReqBody>> for DefaultServeDirFallbackwhere
ReqBody: Send + 'static,
impl<ReqBody> Service<Request<ReqBody>> for DefaultServeDirFallbackwhere
ReqBody: Send + 'static,
§impl<S, B1, B2> Service<Request<B1>> for GrpcWebClientService<S>
impl<S, B1, B2> Service<Request<B1>> for GrpcWebClientService<S>
§impl<S, B> Service<ConnectIpRequestBuilder> for ConnectIpConnector<S>
impl<S, B> Service<ConnectIpRequestBuilder> for ConnectIpConnector<S>
§impl<S, Body> Service<Request<Body>> for ErrorHandler<S>
impl<S, Body> Service<Request<Body>> for ErrorHandler<S>
§impl<S, Body> Service<Request<Body>> for HttpConnectRequestAdapter<S>
impl<S, Body> Service<Request<Body>> for HttpConnectRequestAdapter<S>
type Output = EstablishedClientConnection<<S as ConnectorService<ConnectRequest>>::Connection, Request<Body>>
type Error = ConnectionError
§impl<S, Body> Service<Request<Body>> for PacProxyRoutesService<S>
impl<S, Body> Service<Request<Body>> for PacProxyRoutesService<S>
§impl<S, Body> Service<Request<Body>> for ProfileEmulateHttpRequestModifier<S>
impl<S, Body> Service<Request<Body>> for ProfileEmulateHttpRequestModifier<S>
§impl<S, Body> Service<Request<Body>> for ProfileEmulateRelayRequestModifier<S>
impl<S, Body> Service<Request<Body>> for ProfileEmulateRelayRequestModifier<S>
§impl<S, Body> Service<Request<Body>> for RequestVersionAdapter<S>
impl<S, Body> Service<Request<Body>> for RequestVersionAdapter<S>
type Output = EstablishedClientConnection<<S as ConnectorService<Request<Body>>>::Connection, Request<Body>>
type Error = ConnectionError
§impl<S, Body> Service<Request<Body>> for ResponseVersionAdapter<S>
impl<S, Body> Service<Request<Body>> for ResponseVersionAdapter<S>
§impl<S, Body> Service<Request<Body>> for UserAgentClassifier<S>
impl<S, Body> Service<Request<Body>> for UserAgentClassifier<S>
§impl<S, Body> Service<Request<Body>> for WebSocketAcceptorService<S>
impl<S, Body> Service<Request<Body>> for WebSocketAcceptorService<S>
§impl<S, C, D, IO, RequestBody, ResponseBody> Service<Request<RequestBody>> for Adaptation<S, C, D>where
S: Service<Request, Output = Response<ResponseBody>>,
<S as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: ConnectorService<ConnectRequest, Connection = ClientConnection<IO>>,
D: Service<OptionsRequest>,
<D as Service<OptionsRequest>>::Output: Into<Arc<ServiceCapabilities>>,
<D as Service<OptionsRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: Io + Unpin + ExtensionsRef,
RequestBody: Body<Data = Bytes> + Send + Sync + 'static,
<RequestBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ResponseBody: Body<Data = Bytes> + Send + Sync + 'static,
<ResponseBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<S, C, D, IO, RequestBody, ResponseBody> Service<Request<RequestBody>> for Adaptation<S, C, D>where
S: Service<Request, Output = Response<ResponseBody>>,
<S as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: ConnectorService<ConnectRequest, Connection = ClientConnection<IO>>,
D: Service<OptionsRequest>,
<D as Service<OptionsRequest>>::Output: Into<Arc<ServiceCapabilities>>,
<D as Service<OptionsRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: Io + Unpin + ExtensionsRef,
RequestBody: Body<Data = Bytes> + Send + Sync + 'static,
<RequestBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
ResponseBody: Body<Data = Bytes> + Send + Sync + 'static,
<ResponseBody as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<S, C, Input> Service<Input> for CountInput<S, C>
impl<S, C, Input> Service<Input> for CountInput<S, C>
§impl<S, C, Input> Service<Input> for ProfileEmulateHttpConnectModifier<S, C>where
S: ConnectorService<Input>,
C: ConnectionProfileCompiler<Input>,
<C as ConnectionProfileCompiler<Input>>::Compiled: InstalledConnectionProfile<Input>,
Input: ExtensionsRef + HttpVersionInputExt + TargetHttpVersionInputExt + Send + 'static,
impl<S, C, Input> Service<Input> for ProfileEmulateHttpConnectModifier<S, C>where
S: ConnectorService<Input>,
C: ConnectionProfileCompiler<Input>,
<C as ConnectionProfileCompiler<Input>>::Compiled: InstalledConnectionProfile<Input>,
Input: ExtensionsRef + HttpVersionInputExt + TargetHttpVersionInputExt + Send + 'static,
type Error = ConnectionError
type Output = EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>
§impl<S, C> Service<ConnectRequest> for ConnectUdpConnector<S, C>where
S: Service<Request, Output = Response>,
<S as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: DatagramSocket,
impl<S, C> Service<ConnectRequest> for ConnectUdpConnector<S, C>where
S: Service<Request, Output = Response>,
<S as Service<Request>>::Error: Into<Box<dyn Error + Send + Sync>>,
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: DatagramSocket,
type Output = EstablishedClientConnection<MaybeTunneledSocket<<C as ConnectorService<ConnectRequest>>::Connection>, ConnectRequest>
type Error = ConnectionError
§impl<S, D, P, F, Input> Service<Input> for ProxyDBService<S, D, P, F>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>> + Send + Sync + 'static,
D: ProxyDB,
<D as ProxyDB>::Error: Into<Box<dyn Error + Send + Sync>> + Send + Sync + 'static,
P: ProxyQueryPredicate,
F: UsernameFormatter,
Input: TransportProtocolInputExt + ExtensionsRef + Send + 'static,
impl<S, D, P, F, Input> Service<Input> for ProxyDBService<S, D, P, F>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>> + Send + Sync + 'static,
D: ProxyDB,
<D as ProxyDB>::Error: Into<Box<dyn Error + Send + Sync>> + Send + Sync + 'static,
P: ProxyQueryPredicate,
F: UsernameFormatter,
Input: TransportProtocolInputExt + ExtensionsRef + Send + 'static,
§impl<S, F, Body> Service<Request<Body>> for RequestMetricsService<S, F>
impl<S, F, Body> Service<Request<Body>> for RequestMetricsService<S, F>
§impl<S, F, Input, R> Service<Input> for ConsumeErr<S, F, StaticOutput<R>>
impl<S, F, Input, R> Service<Input> for ConsumeErr<S, F, StaticOutput<R>>
§impl<S, F, Input> Service<Input> for ConsumeErr<S, F>
impl<S, F, Input> Service<Input> for ConsumeErr<S, F>
§impl<S, F, R, Body> Service<Request<Body>> for ErrorHandler<S, F>
impl<S, F, R, Body> Service<Request<Body>> for ErrorHandler<S, F>
§impl<S, F, Stream> Service<Stream> for NetworkMetricsService<S, F>
impl<S, F, Stream> Service<Stream> for NetworkMetricsService<S, F>
§impl<S, H, Body> Service<Request<Body>> for SetForwardedHeaderService<S, H>
impl<S, H, Body> Service<Request<Body>> for SetForwardedHeaderService<S, H>
§impl<S, H, M, Input> Service<Input> for HijackService<S, H, M>
impl<S, H, M, Input> Service<Input> for HijackService<S, H, M>
§impl<S, H, ReqBody, ResBody> Service<Request<ReqBody>> for HtmlRewrite<S, H>
impl<S, H, ReqBody, ResBody> Service<Request<ReqBody>> for HtmlRewrite<S, H>
§impl<S, H, ReqBody, ResBody> Service<Request<ReqBody>> for JsonRewrite<S, H>
impl<S, H, ReqBody, ResBody> Service<Request<ReqBody>> for JsonRewrite<S, H>
§impl<S, H, ReqBody> Service<Request<ReqBody>> for JsonRequestRewrite<S, H>
impl<S, H, ReqBody> Service<Request<ReqBody>> for JsonRequestRewrite<S, H>
§impl<S, I, ReqBody, ResBody> Service<Request<ReqBody>> for InterceptedService<S, I>
impl<S, I, ReqBody, ResBody> Service<Request<ReqBody>> for InterceptedService<S, I>
§impl<S, I> Service<I> for IntoResponseService<S>
impl<S, I> Service<I> for IntoResponseService<S>
§impl<S, IO> Service<FastCgiClientRequest> for FastCgiClient<S>where
S: Service<FastCgiClientRequest, Output = EstablishedClientConnection<IO, FastCgiClientRequest>>,
<S as Service<FastCgiClientRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
impl<S, IO> Service<FastCgiClientRequest> for FastCgiClient<S>where
S: Service<FastCgiClientRequest, Output = EstablishedClientConnection<IO, FastCgiClientRequest>>,
<S as Service<FastCgiClientRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
§impl<S, IO> Service<IO> for rama::http::BodyLimitService<S>
impl<S, IO> Service<IO> for rama::http::BodyLimitService<S>
§impl<S, IO> Service<IO> for FastCgiServer<S>where
S: Service<FastCgiRequest, Output = FastCgiResponse>,
<S as Service<FastCgiRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: Io + Unpin + Send + 'static,
impl<S, IO> Service<IO> for FastCgiServer<S>where
S: Service<FastCgiRequest, Output = FastCgiResponse>,
<S as Service<FastCgiRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: Io + Unpin + Send + 'static,
§impl<S, IO> Service<IO> for GracefulIoService<S>
impl<S, IO> Service<IO> for GracefulIoService<S>
type Output = <S as Service<GracefulIo<WaitForCancellationFutureOwned, IO>>>::Output
type Error = <S as Service<GracefulIo<WaitForCancellationFutureOwned, IO>>>::Error
§impl<S, IO> Service<IO> for rama::proxy::haproxy::server::HaProxyService<S>where
S: Service<PrefixedIo<HeapReader, IO>>,
<S as Service<PrefixedIo<HeapReader, IO>>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: Io + Unpin + ExtensionsRef,
impl<S, IO> Service<IO> for rama::proxy::haproxy::server::HaProxyService<S>where
S: Service<PrefixedIo<HeapReader, IO>>,
<S as Service<PrefixedIo<HeapReader, IO>>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: Io + Unpin + ExtensionsRef,
§impl<S, IO> Service<IO> for IncomingBytesTrackerService<S>
impl<S, IO> Service<IO> for IncomingBytesTrackerService<S>
type Output = <S as Service<BytesRWTracker<IO>>>::Output
type Error = <S as Service<BytesRWTracker<IO>>>::Error
§impl<S, IO> Service<IO> for Server<S>where
IO: Io + Unpin + ExtensionsRef,
S: Service<IncomingRequest, Output = OutgoingResponse>,
<S as Service<IncomingRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<S, IO> Service<IO> for Server<S>where
IO: Io + Unpin + ExtensionsRef,
S: Service<IncomingRequest, Output = OutgoingResponse>,
<S as Service<IncomingRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
§impl<S, IO> Service<IO> for TcpStreamOptionsService<S>
impl<S, IO> Service<IO> for TcpStreamOptionsService<S>
§impl<S, IO> Service<IO> for rama::tls::boring::server::TlsAcceptorService<S>
impl<S, IO> Service<IO> for rama::tls::boring::server::TlsAcceptorService<S>
§impl<S, IO> Service<IO> for rama::tls::rustls::server::TlsAcceptorService<S>
impl<S, IO> Service<IO> for rama::tls::rustls::server::TlsAcceptorService<S>
§impl<S, IO> Service<Request> for FastCgiHttpClient<S>where
S: Service<FastCgiClientRequest, Output = EstablishedClientConnection<IO, FastCgiClientRequest>>,
<S as Service<FastCgiClientRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
impl<S, IO> Service<Request> for FastCgiHttpClient<S>where
S: Service<FastCgiClientRequest, Output = EstablishedClientConnection<IO, FastCgiClientRequest>>,
<S as Service<FastCgiClientRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
§impl<S, IO> Service<Request> for FastCgiHttpClientConnector<S>where
S: Service<FastCgiClientRequest, Output = EstablishedClientConnection<IO, FastCgiClientRequest>>,
<S as Service<FastCgiClientRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
impl<S, IO> Service<Request> for FastCgiHttpClientConnector<S>where
S: Service<FastCgiClientRequest, Output = EstablishedClientConnection<IO, FastCgiClientRequest>>,
<S as Service<FastCgiClientRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
type Output = EstablishedClientConnection<IO, FastCgiClientRequest>
type Error = Box<dyn Error + Send + Sync>
§impl<S, Ingress, C> Service<Ingress> for IoToProxyBridgeIo<S, C>where
S: Service<BridgeIo<Ingress, <C as ConnectorService<ConnectRequest>>::Connection>>,
<S as Service<BridgeIo<Ingress, <C as ConnectorService<ConnectRequest>>::Connection>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + ExtensionsRef,
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: Io + Unpin,
impl<S, Ingress, C> Service<Ingress> for IoToProxyBridgeIo<S, C>where
S: Service<BridgeIo<Ingress, <C as ConnectorService<ConnectRequest>>::Connection>>,
<S as Service<BridgeIo<Ingress, <C as ConnectorService<ConnectRequest>>::Connection>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + ExtensionsRef,
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: Io + Unpin,
type Output = <S as Service<BridgeIo<Ingress, <C as ConnectorService<ConnectRequest>>::Connection>>>::Output
type Error = Box<dyn Error + Send + Sync>
§impl<S, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for WebSocketRelayEventService<S>where
S: Service<WebSocketRelayEventInput>,
<S as Service<WebSocketRelayEventInput>>::Output: Into<WebSocketRelayEventOutput>,
<S as Service<WebSocketRelayEventInput>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
impl<S, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for WebSocketRelayEventService<S>where
S: Service<WebSocketRelayEventInput>,
<S as Service<WebSocketRelayEventInput>>::Output: Into<WebSocketRelayEventOutput>,
<S as Service<WebSocketRelayEventInput>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
§impl<S, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for WebSocketRelayIoService<S>where
S: Service<WebSocketBridge<AsyncWebSocket<Ingress>, AsyncWebSocket<Egress>>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
impl<S, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for WebSocketRelayIoService<S>where
S: Service<WebSocketBridge<AsyncWebSocket<Ingress>, AsyncWebSocket<Egress>>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
type Output = <S as Service<WebSocketBridge<AsyncWebSocket<Ingress>, AsyncWebSocket<Egress>>>>::Output
type Error = <S as Service<WebSocketBridge<AsyncWebSocket<Ingress>, AsyncWebSocket<Egress>>>>::Error
§impl<S, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for WebSocketRelayService<S>where
S: Service<WebSocketRelayInput>,
<S as Service<WebSocketRelayInput>>::Output: Into<WebSocketRelayOutput>,
<S as Service<WebSocketRelayInput>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
impl<S, Ingress, Egress> Service<BridgeIo<Ingress, Egress>> for WebSocketRelayService<S>where
S: Service<WebSocketRelayInput>,
<S as Service<WebSocketRelayInput>>::Output: Into<WebSocketRelayOutput>,
<S as Service<WebSocketRelayInput>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: Io + Unpin + ExtensionsRef,
Egress: Io + Unpin + ExtensionsRef,
§impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for CaptureWebSocketService<S>where
S: Service<WebSocketBridge<Ingress, Egress>>,
Ingress: ExtensionsRef + Send + 'static,
Egress: ExtensionsRef + Send + 'static,
impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for CaptureWebSocketService<S>where
S: Service<WebSocketBridge<Ingress, Egress>>,
Ingress: ExtensionsRef + Send + 'static,
Egress: ExtensionsRef + Send + 'static,
type Output = <S as Service<WebSocketBridge<Ingress, Egress>>>::Output
type Error = <S as Service<WebSocketBridge<Ingress, Egress>>>::Error
§impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for WebSocketRelayEventService<S>where
S: Service<WebSocketRelayEventInput>,
<S as Service<WebSocketRelayEventInput>>::Output: Into<WebSocketRelayEventOutput>,
<S as Service<WebSocketRelayEventInput>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for WebSocketRelayEventService<S>where
S: Service<WebSocketRelayEventInput>,
<S as Service<WebSocketRelayEventInput>>::Output: Into<WebSocketRelayEventOutput>,
<S as Service<WebSocketRelayEventInput>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
§impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for WebSocketRelayService<S>where
S: Service<WebSocketRelayInput>,
<S as Service<WebSocketRelayInput>>::Output: Into<WebSocketRelayOutput>,
<S as Service<WebSocketRelayInput>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for WebSocketRelayService<S>where
S: Service<WebSocketRelayInput>,
<S as Service<WebSocketRelayInput>>::Output: Into<WebSocketRelayOutput>,
<S as Service<WebSocketRelayInput>>::Error: Into<Box<dyn Error + Send + Sync>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
§impl<S, Input, BodyConnection> Service<Input> for HttpConnector<S, BodyConnection>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: IntoHttpTransport,
Input: AuthorityInputExt + ProtocolInputExt + ExtensionsRef + HttpVersionInputExt + TargetHttpVersionInputExt + Send + 'static,
BodyConnection: Body + Unpin + Send + 'static,
<BodyConnection as Body>::Data: Send + 'static,
<BodyConnection as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
impl<S, Input, BodyConnection> Service<Input> for HttpConnector<S, BodyConnection>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: IntoHttpTransport,
Input: AuthorityInputExt + ProtocolInputExt + ExtensionsRef + HttpVersionInputExt + TargetHttpVersionInputExt + Send + 'static,
BodyConnection: Body + Unpin + Send + 'static,
<BodyConnection as Body>::Data: Send + 'static,
<BodyConnection as Body>::Error: Into<Box<dyn Error + Send + Sync>>,
type Output = EstablishedClientConnection<HttpClientService<BodyConnection>, Input>
type Error = ConnectionError
§impl<S, Input, C> Service<Input> for DatagramToProxyBridge<S, C>where
S: Service<<Input as DatagramBridgeInput>::Bridged<<C as ConnectorService<ConnectRequest>>::Connection>>,
<S as Service<<Input as DatagramBridgeInput>::Bridged<<C as ConnectorService<ConnectRequest>>::Connection>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: DatagramBridgeInput,
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: DatagramSocket + Send + 'static,
impl<S, Input, C> Service<Input> for DatagramToProxyBridge<S, C>where
S: Service<<Input as DatagramBridgeInput>::Bridged<<C as ConnectorService<ConnectRequest>>::Connection>>,
<S as Service<<Input as DatagramBridgeInput>::Bridged<<C as ConnectorService<ConnectRequest>>::Connection>>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: DatagramBridgeInput,
C: ConnectorService<ConnectRequest>,
<C as ConnectorService<ConnectRequest>>::Connection: DatagramSocket + Send + 'static,
type Output = <S as Service<<Input as DatagramBridgeInput>::Bridged<<C as ConnectorService<ConnectRequest>>::Connection>>>::Output
type Error = Box<dyn Error + Send + Sync>
§impl<S, Input, R> Service<Input> for ConsumeErr<S, Trace, StaticOutput<R>>
impl<S, Input, R> Service<Input> for ConsumeErr<S, Trace, StaticOutput<R>>
§impl<S, Input, Server> Service<Input> for MockConnectorService<S>
impl<S, Input, Server> Service<Input> for MockConnectorService<S>
type Error = !
type Output = EstablishedClientConnection<MockSocket, Input>
§impl<S, Input, Stream> Service<Input> for PostedRecvConnector<S>
impl<S, Input, Stream> Service<Input> for PostedRecvConnector<S>
type Output = EstablishedClientConnection<PostedRecv<Stream>, Input>
type Error = ConnectionError
§impl<S, Input, Svc> Service<Input> for BoxedConnectorService<S>
impl<S, Input, Svc> Service<Input> for BoxedConnectorService<S>
type Output = EstablishedClientConnection<BoxService<Input, <Svc as Service<Input>>::Output, <Svc as Service<Input>>::Error>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for BindBodyToConnector<S>where
S: ConnectorService<Input>,
Input: Send + 'static,
impl<S, Input> Service<Input> for BindBodyToConnector<S>where
S: ConnectorService<Input>,
Input: Send + 'static,
type Output = EstablishedClientConnection<BindBodyToConn<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for Client<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin + ExtensionsRef,
Input: Send + 'static,
impl<S, Input> Service<Input> for Client<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin + ExtensionsRef,
Input: Send + 'static,
type Output = EstablishedClientConnection<ClientConnection<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for ConnectorTargetFromGetSocketname<S>
impl<S, Input> Service<Input> for ConnectorTargetFromGetSocketname<S>
§impl<S, Input> Service<Input> for ConsumeErr<S, Trace>
impl<S, Input> Service<Input> for ConsumeErr<S, Trace>
§impl<S, Input> Service<Input> for EmulateTlsProfileService<S>
impl<S, Input> Service<Input> for EmulateTlsProfileService<S>
§impl<S, Input> Service<Input> for GracefulConnectorService<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + ExtensionsRef,
Input: Send + 'static,
impl<S, Input> Service<Input> for GracefulConnectorService<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + ExtensionsRef,
Input: Send + 'static,
type Output = EstablishedClientConnection<GracefulIo<WaitForCancellationFutureOwned, <S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for HttpProxyConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + HttpVersionInputExt + TargetHttpVersionInputExt + Send + ExtensionsRef + 'static,
impl<S, Input> Service<Input> for HttpProxyConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + HttpVersionInputExt + TargetHttpVersionInputExt + Send + ExtensionsRef + 'static,
type Output = EstablishedClientConnection<MaybeHttpProxiedConnection<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for LazyProxyAddressService<S>
impl<S, Input> Service<Input> for LazyProxyAddressService<S>
§impl<S, Input> Service<Input> for NoProxyEnvService<S>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: AuthorityInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
impl<S, Input> Service<Input> for NoProxyEnvService<S>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: AuthorityInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
§impl<S, Input> Service<Input> for OutgoingBytesTrackerService<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: Send + 'static,
impl<S, Input> Service<Input> for OutgoingBytesTrackerService<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: Send + 'static,
type Output = EstablishedClientConnection<BytesRWTracker<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for OutgoingThrottleService<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Throttleable,
<<S as ConnectorService<Input>>::Connection as Throttleable>::Throttled: Send + 'static,
Input: Send + 'static,
impl<S, Input> Service<Input> for OutgoingThrottleService<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Throttleable,
<<S as ConnectorService<Input>>::Connection as Throttleable>::Throttled: Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<<<S as ConnectorService<Input>>::Connection as Throttleable>::Throttled, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for ProxyAddressService<S>
impl<S, Input> Service<Input> for ProxyAddressService<S>
§impl<S, Input> Service<Input> for ProxyBypassService<S>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: AuthorityInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
impl<S, Input> Service<Input> for ProxyBypassService<S>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: AuthorityInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
§impl<S, Input> Service<Input> for ProxyEnvService<S>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: UriInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
impl<S, Input> Service<Input> for ProxyEnvService<S>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
Input: UriInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
§impl<S, Input> Service<Input> for ProxyRouteFailureCacheConnector<S>where
S: ConnectorService<Input>,
Input: AuthorityInputExt + ConnectorTransportProtocolInputExt + ProtocolInputExt + Send + 'static,
impl<S, Input> Service<Input> for ProxyRouteFailureCacheConnector<S>where
S: ConnectorService<Input>,
Input: AuthorityInputExt + ConnectorTransportProtocolInputExt + ProtocolInputExt + Send + 'static,
type Output = EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for ProxyRoutesConnector<S>
impl<S, Input> Service<Input> for ProxyRoutesConnector<S>
type Output = EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for ProxyRoutesService<S>
impl<S, Input> Service<Input> for ProxyRoutesService<S>
§impl<S, Input> Service<Input> for Socks5ProxyConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: ConnectorTargetInputExt + Send + 'static,
impl<S, Input> Service<Input> for Socks5ProxyConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: ConnectorTargetInputExt + Send + 'static,
type Output = EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for ThrottleService<S>
impl<S, Input> Service<Input> for ThrottleService<S>
§impl<S, Input> Service<Input> for rama::tls::boring::client::TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
impl<S, Input> Service<Input> for rama::tls::boring::client::TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
type Output = EstablishedClientConnection<TlsStream<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for rama::tls::rustls::client::TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
impl<S, Input> Service<Input> for rama::tls::rustls::client::TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
type Output = EstablishedClientConnection<TlsStream<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for rama::tls::boring::client::TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: Send + ExtensionsRef + 'static,
impl<S, Input> Service<Input> for rama::tls::boring::client::TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: Send + ExtensionsRef + 'static,
type Output = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for rama::tls::rustls::client::TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: Send + ExtensionsRef + 'static,
impl<S, Input> Service<Input> for rama::tls::rustls::client::TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: Send + ExtensionsRef + 'static,
type Output = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for rama::tls::rustls::client::TlsConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
impl<S, Input> Service<Input> for rama::tls::rustls::client::TlsConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
type Output = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, Input> Service<Input> for rama::tls::boring::client::TlsConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
impl<S, Input> Service<Input> for rama::tls::boring::client::TlsConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
type Output = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Input>>::Connection>, Input>
type Error = ConnectionError
§impl<S, L, Input> Service<Input> for MapEstablishedConnection<S, L>where
S: ConnectorService<Input>,
L: Layer<<S as ConnectorService<Input>>::Connection> + Send + Sync + 'static,
<L as Layer<<S as ConnectorService<Input>>::Connection>>::Service: ExtensionsRef + Send + 'static,
Input: Send + 'static,
impl<S, L, Input> Service<Input> for MapEstablishedConnection<S, L>where
S: ConnectorService<Input>,
L: Layer<<S as ConnectorService<Input>>::Connection> + Send + Sync + 'static,
<L as Layer<<S as ConnectorService<Input>>::Connection>>::Service: ExtensionsRef + Send + 'static,
Input: Send + 'static,
type Output = EstablishedClientConnection<<L as Layer<<S as ConnectorService<Input>>::Connection>>::Service, Input>
type Error = ConnectionError
§impl<S, L, Input> Service<Input> for MaybeLayeredService<S, L>
impl<S, L, Input> Service<Input> for MaybeLayeredService<S, L>
§impl<S, M, B, R> Service<Request<B>> for ConnectUdpMitm<S, M>
impl<S, M, B, R> Service<Request<B>> for ConnectUdpMitm<S, M>
§impl<S, M, ReqBody, ResBody> Service<Request<ReqBody>> for Decompression<S, M>where
S: Service<Request<ReqBody>, Output = Response<ResBody>>,
<S as Service<Request<ReqBody>>>::Error: Into<Box<dyn Error + Send + Sync>>,
M: ServiceMatcher<Request<ReqBody>, ModifiedInput = Request<ReqBody>>,
<M as ServiceMatcher<Request<ReqBody>>>::Service: ServiceMatcher<Response<ResBody>, ModifiedInput = Response<ResBody>, Service = ()>,
<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Error: Into<Box<dyn Error + Send + Sync>>,
<M as ServiceMatcher<Request<ReqBody>>>::Error: Into<Box<dyn Error + Send + Sync>>,
ReqBody: Send + 'static,
ResBody: Body + Send + 'static,
<ResBody as Body>::Data: Send + 'static,
<ResBody as Body>::Error: Send + 'static,
impl<S, M, ReqBody, ResBody> Service<Request<ReqBody>> for Decompression<S, M>where
S: Service<Request<ReqBody>, Output = Response<ResBody>>,
<S as Service<Request<ReqBody>>>::Error: Into<Box<dyn Error + Send + Sync>>,
M: ServiceMatcher<Request<ReqBody>, ModifiedInput = Request<ReqBody>>,
<M as ServiceMatcher<Request<ReqBody>>>::Service: ServiceMatcher<Response<ResBody>, ModifiedInput = Response<ResBody>, Service = ()>,
<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Error: Into<Box<dyn Error + Send + Sync>>,
<M as ServiceMatcher<Request<ReqBody>>>::Error: Into<Box<dyn Error + Send + Sync>>,
ReqBody: Send + 'static,
ResBody: Body + Send + 'static,
<ResBody as Body>::Data: Send + 'static,
<ResBody as Body>::Error: Send + 'static,
§impl<S, M, ReqBody, ResBody> Service<Request<ReqBody>> for SetRequestId<S, M>
impl<S, M, ReqBody, ResBody> Service<Request<ReqBody>> for SetRequestId<S, M>
§impl<S, O> Service<Request> for UpgradeService<S, O>
impl<S, O> Service<Request> for UpgradeService<S, O>
§impl<S, P, Body> Service<Request<Body>> for ProfileEmulateService<S, P>
impl<S, P, Body> Service<Request<Body>> for ProfileEmulateService<S, P>
§impl<S, P, Input> Service<Input> for rama::proxy::haproxy::client::HaProxyService<S, P, One>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Socket + Unpin,
P: Send + 'static,
Input: Send + ExtensionsRef + 'static,
impl<S, P, Input> Service<Input> for rama::proxy::haproxy::client::HaProxyService<S, P, One>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Socket + Unpin,
P: Send + 'static,
Input: Send + ExtensionsRef + 'static,
type Output = EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>
type Error = ConnectionError
§impl<S, P, Input> Service<Input> for rama::proxy::haproxy::client::HaProxyService<S, P>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Socket + Unpin,
P: Protocol + Send + 'static,
Input: Send + ExtensionsRef + 'static,
impl<S, P, Input> Service<Input> for rama::proxy::haproxy::client::HaProxyService<S, P>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Socket + Unpin,
P: Protocol + Send + 'static,
Input: Send + ExtensionsRef + 'static,
type Output = EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>
type Error = ConnectionError
§impl<S, P, Input> Service<Input> for SystemProxyService<S, P>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
P: SystemProxyPacService,
Input: UriInputExt + AuthorityInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
impl<S, P, Input> Service<Input> for SystemProxyService<S, P>where
S: Service<Input>,
<S as Service<Input>>::Error: Into<Box<dyn Error + Send + Sync>>,
P: SystemProxyPacService,
Input: UriInputExt + AuthorityInputExt + ProtocolInputExt + ExtensionsRef + Send + 'static,
§impl<S, P, Input> Service<Input> for UsernameLabelParserService<S, P>
impl<S, P, Input> Service<Input> for UsernameLabelParserService<S, P>
§impl<S, P> Service<ConnectRequest> for SystemProxyConnectService<S, P>where
S: Service<ConnectRequest>,
<S as Service<ConnectRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
P: SystemProxyPacService,
impl<S, P> Service<ConnectRequest> for SystemProxyConnectService<S, P>where
S: Service<ConnectRequest>,
<S as Service<ConnectRequest>>::Error: Into<Box<dyn Error + Send + Sync>>,
P: SystemProxyPacService,
§impl<S, Q, Input> Service<Input> for HttpTransportConnector<S, Q>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: IntoHttpTransport,
Q: ConnectorService<Input, Connection = Http3Transport>,
Input: ExtensionsRef + HttpVersionInputExt + TargetHttpVersionInputExt + Send + 'static,
Available on crate feature quic only.
impl<S, Q, Input> Service<Input> for HttpTransportConnector<S, Q>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: IntoHttpTransport,
Q: ConnectorService<Input, Connection = Http3Transport>,
Input: ExtensionsRef + HttpVersionInputExt + TargetHttpVersionInputExt + Send + 'static,
Available on crate feature
quic only.