Struct BridgeIo
pub struct BridgeIo<Io1, Io2>(pub Io1, pub Io2);std only.Expand description
A bidirectional bridge between two Io objects.
Often this is for Client-Server communication, but in a P2P like topology it can also be equal nodes.
ExtensionsRef and ExtensionsRef is implemented
in function of Io1 as it is assumed that in flows where
BridgeIo is used that we keep moving from “left” (Io1)
to “right” (Io2) until we start to actually relay bytes,
handshakes or any kind of data.
If you ever use Io2’s extensions you can do so explicitly.
Tuple Fields§
§0: Io1§1: Io2Trait Implementations§
§impl<Ingress, Egress> DatagramPeekInput for BridgeIo<Ingress, Egress>where
Ingress: DatagramSocket,
Egress: Send + 'static,
impl<Ingress, Egress> DatagramPeekInput for BridgeIo<Ingress, Egress>where
Ingress: DatagramSocket,
Egress: Send + 'static,
§type Mapped<Peeked: DatagramSocket> = BridgeIo<Peeked, Egress>
type Mapped<Peeked: DatagramSocket> = BridgeIo<Peeked, Egress>
PrefixedDatagramSocket.§fn peek_socket_mut(
&mut self,
) -> &mut <BridgeIo<Ingress, Egress> as DatagramPeekInput>::Socket
fn peek_socket_mut( &mut self, ) -> &mut <BridgeIo<Ingress, Egress> as DatagramPeekInput>::Socket
§fn map_peek_socket<Peeked, F>(
self,
map: F,
) -> <BridgeIo<Ingress, Egress> as DatagramPeekInput>::Mapped<Peeked>where
Peeked: DatagramSocket,
F: FnOnce(<BridgeIo<Ingress, Egress> as DatagramPeekInput>::Socket) -> Peeked,
fn map_peek_socket<Peeked, F>(
self,
map: F,
) -> <BridgeIo<Ingress, Egress> as DatagramPeekInput>::Mapped<Peeked>where
Peeked: DatagramSocket,
F: FnOnce(<BridgeIo<Ingress, Egress> as DatagramPeekInput>::Socket) -> Peeked,
map’s result for its peeked socket.§impl<Io1, Io2> ExtensionsRef for BridgeIo<Io1, Io2>where
Io1: ExtensionsRef,
impl<Io1, Io2> ExtensionsRef for BridgeIo<Io1, Io2>where
Io1: ExtensionsRef,
§fn extensions(&self) -> &Extensions
fn extensions(&self) -> &Extensions
Extensions store§impl<Ingress, Egress> PeekIoProvider for BridgeIo<Ingress, Egress>
impl<Ingress, Egress> PeekIoProvider for BridgeIo<Ingress, Egress>
§type Mapped<PeekedIngress: Io> = BridgeIo<PeekedIngress, Egress>
type Mapped<PeekedIngress: Io> = BridgeIo<PeekedIngress, Egress>
Self type produced as a result of
mapping the PeekIo type.§fn peek_io_mut(
&mut self,
) -> &mut <BridgeIo<Ingress, Egress> as PeekIoProvider>::PeekIo
fn peek_io_mut( &mut self, ) -> &mut <BridgeIo<Ingress, Egress> as PeekIoProvider>::PeekIo
§fn map_peek_io<PeekedIngress, F>(
self,
map: F,
) -> <BridgeIo<Ingress, Egress> as PeekIoProvider>::Mapped<PeekedIngress>where
PeekedIngress: Io,
F: FnOnce(<BridgeIo<Ingress, Egress> as PeekIoProvider>::PeekIo) -> PeekedIngress,
fn map_peek_io<PeekedIngress, F>(
self,
map: F,
) -> <BridgeIo<Ingress, Egress> as PeekIoProvider>::Mapped<PeekedIngress>where
PeekedIngress: Io,
F: FnOnce(<BridgeIo<Ingress, Egress> as PeekIoProvider>::PeekIo) -> PeekedIngress,
self
by mapping the Peeked Io type and produce a new type,
usually with the peeked data in-memory as prefix.§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.
§type Error = DatagramForwardError
type Error = DatagramForwardError
§async fn serve(
&self,
__arg1: BridgeIo<A, B>,
) -> Result<(), <DatagramForwardService as Service<BridgeIo<A, B>>>::Error>
async fn serve( &self, __arg1: BridgeIo<A, B>, ) -> Result<(), <DatagramForwardService as Service<BridgeIo<A, B>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§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 Service<BridgeIo<Connection, Connection>> for QuicRelay
impl Service<BridgeIo<Connection, Connection>> for QuicRelay
§fn serve(
&self,
_: BridgeIo<Connection, Connection>,
) -> impl Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send
fn serve( &self, _: BridgeIo<Connection, Connection>, ) -> impl Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send
Relay dedicated, established connections until either connection ends.
ingress is a server connection and egress a client connection.
Both hops must negotiate the same nonempty ALPN. Do not consume their
streams or datagrams concurrently elsewhere. Configure receive datagram
advertisements to match this policy before establishing either hop. Neither
hop may have enabled early-data keys: this generic relay does not decide
application replay safety. Configure TLS early data off on both hops.
Dropping this future closes both connections, including streams waiting
for remote credit. Connection-level transport errors are returned locally
and mapped to failure_code on the other hop; they are not fabricated as
transport errors belonging to that independent connection.
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§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<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,
§type Error = TlsMitmRelayError
type Error = TlsMitmRelayError
§async fn serve(
&self,
input: BridgeIo<Ingress, Egress>,
) -> Result<<TlsMitmRelayService<Issuer, Inner> as Service<BridgeIo<Ingress, Egress>>>::Output, <TlsMitmRelayService<Issuer, Inner> as Service<BridgeIo<Ingress, Egress>>>::Error>
async fn serve( &self, input: BridgeIo<Ingress, Egress>, ) -> Result<<TlsMitmRelayService<Issuer, Inner> as Service<BridgeIo<Ingress, Egress>>>::Output, <TlsMitmRelayService<Issuer, Inner> as Service<BridgeIo<Ingress, Egress>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§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,
§async fn serve(
&self,
__arg1: BridgeIo<Ingress, Egress>,
) -> Result<<HttpMitmRelay<M, P> as Service<BridgeIo<Ingress, Egress>>>::Output, <HttpMitmRelay<M, P> as Service<BridgeIo<Ingress, Egress>>>::Error>
async fn serve( &self, __arg1: BridgeIo<Ingress, Egress>, ) -> Result<<HttpMitmRelay<M, P> as Service<BridgeIo<Ingress, Egress>>>::Output, <HttpMitmRelay<M, P> as Service<BridgeIo<Ingress, Egress>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§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,
§async fn serve(
&self,
__arg1: BridgeIo<Ingress, Egress>,
) -> Result<<Socks5MitmRelayService<I, F> as Service<BridgeIo<Ingress, Egress>>>::Output, <Socks5MitmRelayService<I, F> as Service<BridgeIo<Ingress, Egress>>>::Error>
async fn serve( &self, __arg1: BridgeIo<Ingress, Egress>, ) -> Result<<Socks5MitmRelayService<I, F> as Service<BridgeIo<Ingress, Egress>>>::Output, <Socks5MitmRelayService<I, F> as Service<BridgeIo<Ingress, Egress>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§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 Output = <S as Service<WebSocketBridge<AsyncWebSocket<Ingress>, AsyncWebSocket<Egress>>>>::Output
§type Error = <S as Service<WebSocketBridge<AsyncWebSocket<Ingress>, AsyncWebSocket<Egress>>>>::Error
type Error = <S as Service<WebSocketBridge<AsyncWebSocket<Ingress>, AsyncWebSocket<Egress>>>>::Error
§async fn serve(
&self,
bridge: BridgeIo<Ingress, Egress>,
) -> Result<<WebSocketRelayIoService<S> as Service<BridgeIo<Ingress, Egress>>>::Output, <WebSocketRelayIoService<S> as Service<BridgeIo<Ingress, Egress>>>::Error>
async fn serve( &self, bridge: BridgeIo<Ingress, Egress>, ) -> Result<<WebSocketRelayIoService<S> as Service<BridgeIo<Ingress, Egress>>>::Output, <WebSocketRelayIoService<S> as Service<BridgeIo<Ingress, Egress>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::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,
§async fn serve(
&self,
bridge: BridgeIo<Ingress, Egress>,
) -> Result<<WebSocketRelayService<S> as Service<BridgeIo<Ingress, Egress>>>::Output, <WebSocketRelayService<S> as Service<BridgeIo<Ingress, Egress>>>::Error>
async fn serve( &self, bridge: BridgeIo<Ingress, Egress>, ) -> Result<<WebSocketRelayService<S> as Service<BridgeIo<Ingress, Egress>>>::Output, <WebSocketRelayService<S> as Service<BridgeIo<Ingress, Egress>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§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,
§async fn serve(
&self,
bridge: BridgeIo<Ingress, Egress>,
) -> Result<<WebSocketRelayEventService<S> as Service<BridgeIo<Ingress, Egress>>>::Output, <WebSocketRelayEventService<S> as Service<BridgeIo<Ingress, Egress>>>::Error>
async fn serve( &self, bridge: BridgeIo<Ingress, Egress>, ) -> Result<<WebSocketRelayEventService<S> as Service<BridgeIo<Ingress, Egress>>>::Output, <WebSocketRelayEventService<S> as Service<BridgeIo<Ingress, Egress>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§impl<L, R> Service<BridgeIo<L, R>> for HttpDatagramRelay
impl<L, R> Service<BridgeIo<L, R>> for HttpDatagramRelay
§type Output = DatagramRelayOutcome
type Output = DatagramRelayOutcome
§type Error = SessionError
type Error = SessionError
§fn serve(
&self,
_: BridgeIo<L, R>,
) -> impl Future<Output = Result<<HttpDatagramRelay as Service<BridgeIo<L, R>>>::Output, <HttpDatagramRelay as Service<BridgeIo<L, R>>>::Error>> + Send
fn serve( &self, _: BridgeIo<L, R>, ) -> impl Future<Output = Result<<HttpDatagramRelay as Service<BridgeIo<L, R>>>::Output, <HttpDatagramRelay as Service<BridgeIo<L, R>>>::Error>> + Send
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§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,
§async fn serve(
&self,
__arg1: BridgeIo<Peer<A>, Peer<B>>,
) -> Result<(), DatagramForwardError>
async fn serve( &self, __arg1: BridgeIo<Peer<A>, Peer<B>>, ) -> Result<(), DatagramForwardError>
Forward both directions. A closed destination drains the sibling for at most the close timeout; a closed receive side ends the association after its buffered input. Other I/O or preservation errors cancel both directions. Dropping the future drops its socket owners and pending send handles. Apply association admission, idle expiration and shutdown in the caller.
§type Error = DatagramForwardError
type Error = DatagramForwardError
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§impl<S, T> Service<BridgeIo<S, T>> for IoForwardService
impl<S, T> Service<BridgeIo<S, T>> for IoForwardService
§type Output = IoForwardOutcome
type Output = IoForwardOutcome
§type Error = IoForwardError
type Error = IoForwardError
§async fn serve(
&self,
__arg1: BridgeIo<S, T>,
) -> Result<<IoForwardService as Service<BridgeIo<S, T>>>::Output, <IoForwardService as Service<BridgeIo<S, T>>>::Error>
async fn serve( &self, __arg1: BridgeIo<S, T>, ) -> Result<<IoForwardService as Service<BridgeIo<S, T>>>::Output, <IoForwardService as Service<BridgeIo<S, T>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Auto Trait Implementations§
impl<Io1, Io2> Freeze for BridgeIo<Io1, Io2>
impl<Io1, Io2> RefUnwindSafe for BridgeIo<Io1, Io2>where
Io1: RefUnwindSafe,
Io2: RefUnwindSafe,
impl<Io1, Io2> Send for BridgeIo<Io1, Io2>
impl<Io1, Io2> Sync for BridgeIo<Io1, Io2>
impl<Io1, Io2> Unpin for BridgeIo<Io1, Io2>
impl<Io1, Io2> UnsafeUnpin for BridgeIo<Io1, Io2>where
Io1: UnsafeUnpin,
Io2: UnsafeUnpin,
impl<Io1, Io2> UnwindSafe for BridgeIo<Io1, Io2>where
Io1: UnwindSafe,
Io2: UnwindSafe,
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> ForwardedClientExt for Twhere
T: ExtensionsRef + ?Sized,
impl<T> ForwardedClientExt for Twhere
T: ExtensionsRef + ?Sized,
§fn forwarded_client(&self) -> Option<&ForwardedElement>
fn forwarded_client(&self) -> Option<&ForwardedElement>
§fn forwarded_client_ip(&self) -> Option<IpAddr>
fn forwarded_client_ip(&self) -> Option<IpAddr>
for node.§fn forwarded_client_socket_addr(&self) -> Option<SocketAddress>
fn forwarded_client_socket_addr(&self) -> Option<SocketAddress>
for node.§fn forwarded_client_host(&self) -> Option<&ForwardedAuthority>
fn forwarded_client_host(&self) -> Option<&ForwardedAuthority>
§fn forwarded_client_proto(&self) -> Option<ForwardedProtocol>
fn forwarded_client_proto(&self) -> Option<ForwardedProtocol>
§fn forwarded_client_version(&self) -> Option<ForwardedVersion>
fn forwarded_client_version(&self) -> Option<ForwardedVersion>
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more