Struct TcpStream
pub struct TcpStream {
pub stream: TcpStream,
pub extensions: Extensions,
/* private fields */
}std and tcp only.Expand description
A TCP stream with its Extensions.
It publishes an AbortIo in its own extensions: once called, dropping the
stream sends a TCP RST instead of a FIN: SO_LINGER 0 only takes effect on close, which
is the owner’s to do.
Fields§
§stream: TcpStream§extensions: ExtensionsImplementations§
§impl TcpStream
impl TcpStream
pub fn new(stream: TcpStream) -> TcpStream
pub fn try_from_socket(
socket: Socket,
extensions: Extensions,
) -> Result<TcpStream, Error>
Available on target_family=unix or Windows only.
pub fn try_from_socket( socket: Socket, extensions: Extensions, ) -> Result<TcpStream, Error>
target_family=unix or Windows only.Convert an already usable TCP socket into a Rama TcpStream.
This is a synchronous adapter. It sets the socket to non-blocking mode
and registers it with Tokio, but it does not complete a pending
non-blocking connect(2).
Use TcpStream::try_from_connecting_socket when connect returned an
in-progress error such as EINPROGRESS or WouldBlock; that async
constructor waits for connect completion and checks the pending socket
error before returning.
pub async fn try_from_connecting_socket(
socket: Socket,
extensions: Extensions,
) -> Result<TcpStream, Error>
Available on target_family=unix or Windows only.
pub async fn try_from_connecting_socket( socket: Socket, extensions: Extensions, ) -> Result<TcpStream, Error>
target_family=unix or Windows only.Convert a TCP socket with a pending non-blocking connect into a Rama
TcpStream, then wait for the connect attempt to complete.
Call this after invoking connect on a non-blocking socket when the OS
reports that the connect is in progress. This mirrors Tokio’s own TCP
connect flow: wait for write-readiness, then inspect the pending socket
error with SO_ERROR.
pub async fn try_from_connecting_socket_with_timeout(
socket: Socket,
extensions: Extensions,
timeout: Duration,
) -> Result<TcpStream, Error>
Available on target_family=unix or Windows only.
pub async fn try_from_connecting_socket_with_timeout( socket: Socket, extensions: Extensions, timeout: Duration, ) -> Result<TcpStream, Error>
target_family=unix or Windows only.Convert a TCP socket with a pending non-blocking connect into a Rama
TcpStream, then wait up to timeout for the connect attempt to
complete.
If the timeout elapses, the stream is dropped and
io::ErrorKind::TimedOut is returned.
§Example
use rama_core::extensions::Extensions;
use rama_net::socket::core::{Domain, Protocol, Socket, Type};
use rama_tcp::TcpStream;
use std::{io, net::SocketAddr, time::Duration};
async fn connect_with_bound() -> io::Result<TcpStream> {
// TEST-NET-1 documentation address; useful for examples because it
// should not identify a real Internet host.
let addr: SocketAddr = "192.0.2.1:80".parse().unwrap();
let socket = Socket::new(Domain::IPV4, Type::STREAM, Some(Protocol::TCP))?;
socket.set_nonblocking(true)?;
match socket.connect(&addr.into()) {
Ok(()) => {}
Err(err)
if matches!(
err.kind(),
io::ErrorKind::WouldBlock | io::ErrorKind::AlreadyExists
) => {}
Err(err) => return Err(err),
}
TcpStream::try_from_connecting_socket_with_timeout(
socket,
Extensions::new(),
Duration::from_secs(10),
)
.await
}pub async fn finish_connect(self) -> Result<TcpStream, Error>
pub async fn finish_connect(self) -> Result<TcpStream, Error>
Wait for a pending non-blocking connect on this stream to complete.
Write-readiness signals that the connect attempt has finished, either successfully or with an error. The pending socket error is checked before success is returned.
pub async fn finish_connect_with_timeout(
self,
timeout: Duration,
) -> Result<TcpStream, Error>
pub async fn finish_connect_with_timeout( self, timeout: Duration, ) -> Result<TcpStream, Error>
Wait up to timeout for a pending non-blocking connect on this stream
to complete.
If the timeout elapses, the stream is dropped and
io::ErrorKind::TimedOut is returned.
pub fn try_from_std_tcp_stream(
stream: TcpStream,
extensions: Extensions,
) -> Result<TcpStream, Error>
pub fn try_from_std_tcp_stream( stream: TcpStream, extensions: Extensions, ) -> Result<TcpStream, Error>
Convert an already usable standard TCP stream into a Rama TcpStream.
This is a synchronous adapter. It does not complete a pending
non-blocking connect; use TcpStream::finish_connect after conversion
when the stream represents an in-progress connect attempt.
pub fn from_tokio_tcp_stream( stream: TcpStream, extensions: Extensions, ) -> TcpStream
Trait Implementations§
§impl AsSocketRef for TcpStream
Available on target_family=unix or Windows only.
impl AsSocketRef for TcpStream
target_family=unix or Windows only.§fn as_socket_ref(&self) -> SockRef<'_>
fn as_socket_ref(&self) -> SockRef<'_>
§impl AsyncWrite for TcpStream
impl AsyncWrite for TcpStream
§fn poll_write(
self: Pin<&mut TcpStream>,
cx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize, Error>>
fn poll_write( self: Pin<&mut TcpStream>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize, Error>>
buf into the object. Read more§fn poll_write_vectored(
self: Pin<&mut TcpStream>,
cx: &mut Context<'_>,
bufs: &[IoSlice<'_>],
) -> Poll<Result<usize, Error>>
fn poll_write_vectored( self: Pin<&mut TcpStream>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize, Error>>
poll_write, except that it writes from a slice of buffers. Read more§fn poll_flush(
self: Pin<&mut TcpStream>,
cx: &mut Context<'_>,
) -> Poll<Result<(), Error>>
fn poll_flush( self: Pin<&mut TcpStream>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>
§fn poll_shutdown(
self: Pin<&mut TcpStream>,
cx: &mut Context<'_>,
) -> Poll<Result<(), Error>>
fn poll_shutdown( self: Pin<&mut TcpStream>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>
§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
poll_write_vectored
implementation. Read more§impl ExtensionsRef for TcpStream
impl ExtensionsRef for TcpStream
§fn extensions(&self) -> &Extensions
fn extensions(&self) -> &Extensions
Extensions storeimpl RawTcpStream for TcpStream
§impl Socket for TcpStream
impl Socket for TcpStream
§fn local_addr(&self) -> Result<SocketAddress, Error>
fn local_addr(&self) -> Result<SocketAddress, Error>
§fn peer_addr(&self) -> Result<SocketAddress, Error>
fn peer_addr(&self) -> Result<SocketAddress, Error>
impl<'__pin> Unpin for TcpStreamwhere
<PinnedFieldsOfHelperStruct<__Origin<'__pin>> as PinnedFieldsOfHelperTrait>::Actual: Unpin,
Auto Trait Implementations§
impl !Freeze for TcpStream
impl !RefUnwindSafe for TcpStream
impl !UnwindSafe for TcpStream
impl Forget for TcpStream
impl Send for TcpStream
impl Sync for TcpStream
impl UnsafeUnpin for TcpStream
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,
§impl<R> AsyncReadExt for Rwhere
R: AsyncRead + ?Sized,
impl<R> AsyncReadExt for Rwhere
R: AsyncRead + ?Sized,
§fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
§fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
§fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
buf. Read more§fn read_u8(&mut self) -> ReadU8<&mut Self>where
Self: Unpin,
fn read_u8(&mut self) -> ReadU8<&mut Self>where
Self: Unpin,
§fn read_i8(&mut self) -> ReadI8<&mut Self>where
Self: Unpin,
fn read_i8(&mut self) -> ReadI8<&mut Self>where
Self: Unpin,
§fn read_u16(&mut self) -> ReadU16<&mut Self>where
Self: Unpin,
fn read_u16(&mut self) -> ReadU16<&mut Self>where
Self: Unpin,
§fn read_i16(&mut self) -> ReadI16<&mut Self>where
Self: Unpin,
fn read_i16(&mut self) -> ReadI16<&mut Self>where
Self: Unpin,
§fn read_u32(&mut self) -> ReadU32<&mut Self>where
Self: Unpin,
fn read_u32(&mut self) -> ReadU32<&mut Self>where
Self: Unpin,
§fn read_i32(&mut self) -> ReadI32<&mut Self>where
Self: Unpin,
fn read_i32(&mut self) -> ReadI32<&mut Self>where
Self: Unpin,
§fn read_u64(&mut self) -> ReadU64<&mut Self>where
Self: Unpin,
fn read_u64(&mut self) -> ReadU64<&mut Self>where
Self: Unpin,
§fn read_i64(&mut self) -> ReadI64<&mut Self>where
Self: Unpin,
fn read_i64(&mut self) -> ReadI64<&mut Self>where
Self: Unpin,
§fn read_u128(&mut self) -> ReadU128<&mut Self>where
Self: Unpin,
fn read_u128(&mut self) -> ReadU128<&mut Self>where
Self: Unpin,
§fn read_i128(&mut self) -> ReadI128<&mut Self>where
Self: Unpin,
fn read_i128(&mut self) -> ReadI128<&mut Self>where
Self: Unpin,
§fn read_f32(&mut self) -> ReadF32<&mut Self>where
Self: Unpin,
fn read_f32(&mut self) -> ReadF32<&mut Self>where
Self: Unpin,
§fn read_f64(&mut self) -> ReadF64<&mut Self>where
Self: Unpin,
fn read_f64(&mut self) -> ReadF64<&mut Self>where
Self: Unpin,
§fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where
Self: Unpin,
fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where
Self: Unpin,
§fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where
Self: Unpin,
fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where
Self: Unpin,
§fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where
Self: Unpin,
fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where
Self: Unpin,
§fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where
Self: Unpin,
fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where
Self: Unpin,
§fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where
Self: Unpin,
fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where
Self: Unpin,
§fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where
Self: Unpin,
fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where
Self: Unpin,
§fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where
Self: Unpin,
fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where
Self: Unpin,
§fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where
Self: Unpin,
fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where
Self: Unpin,
§fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where
Self: Unpin,
fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where
Self: Unpin,
§fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where
Self: Unpin,
fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where
Self: Unpin,
§fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
buf. Read more§fn read_to_string<'a>(
&'a mut self,
dst: &'a mut String,
) -> ReadToString<'a, Self>where
Self: Unpin,
fn read_to_string<'a>(
&'a mut self,
dst: &'a mut String,
) -> ReadToString<'a, Self>where
Self: Unpin,
buf. Read more§impl<T> AsyncReadOwned for T
impl<T> AsyncReadOwned for T
§fn poll_read_owned<B>(
&mut self,
cx: &mut Context<'_>,
slot: &mut BufSlot<B>,
) -> Poll<Result<usize, Error>>where
B: IoBufMut,
fn poll_read_owned<B>(
&mut self,
cx: &mut Context<'_>,
slot: &mut BufSlot<B>,
) -> Poll<Result<usize, Error>>where
B: IoBufMut,
slot, returning
the bytes read (0 = EOF). The buffer is moved through the read op: Read more§fn read_owned<B>(
&mut self,
buf: B,
) -> impl Future<Output = (Result<usize, Error>, B)> + Send
fn read_owned<B>( &mut self, buf: B, ) -> impl Future<Output = (Result<usize, Error>, B)> + Send
poll_read_owned:
move buf in, drive to completion, hand it back filled. Not a second
impl: every owned reader gets it for free, relays and read_exact_into
use it. Read more§impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
§fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
§fn write_vectored<'a, 'b>(
&'a mut self,
bufs: &'a [IoSlice<'b>],
) -> WriteVectored<'a, 'b, Self>where
Self: Unpin,
fn write_vectored<'a, 'b>(
&'a mut self,
bufs: &'a [IoSlice<'b>],
) -> WriteVectored<'a, 'b, Self>where
Self: Unpin,
§fn write_buf<'a, B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>
fn write_buf<'a, B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>
§fn write_all_buf<'a, B>(
&'a mut self,
src: &'a mut B,
) -> WriteAllBuf<'a, Self, B>
fn write_all_buf<'a, B>( &'a mut self, src: &'a mut B, ) -> WriteAllBuf<'a, Self, B>
§fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>where
Self: Unpin,
fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>where
Self: Unpin,
§fn write_u8(&mut self, n: u8) -> WriteU8<&mut Self>where
Self: Unpin,
fn write_u8(&mut self, n: u8) -> WriteU8<&mut Self>where
Self: Unpin,
§fn write_i8(&mut self, n: i8) -> WriteI8<&mut Self>where
Self: Unpin,
fn write_i8(&mut self, n: i8) -> WriteI8<&mut Self>where
Self: Unpin,
§fn write_u16(&mut self, n: u16) -> WriteU16<&mut Self>where
Self: Unpin,
fn write_u16(&mut self, n: u16) -> WriteU16<&mut Self>where
Self: Unpin,
§fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>where
Self: Unpin,
fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>where
Self: Unpin,
§fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>where
Self: Unpin,
fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>where
Self: Unpin,
§fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>where
Self: Unpin,
fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>where
Self: Unpin,
§fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>where
Self: Unpin,
fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>where
Self: Unpin,
§fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>where
Self: Unpin,
fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>where
Self: Unpin,
§fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>where
Self: Unpin,
fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>where
Self: Unpin,
§fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>where
Self: Unpin,
fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>where
Self: Unpin,
§fn write_f32(&mut self, n: f32) -> WriteF32<&mut Self>where
Self: Unpin,
fn write_f32(&mut self, n: f32) -> WriteF32<&mut Self>where
Self: Unpin,
§fn write_f64(&mut self, n: f64) -> WriteF64<&mut Self>where
Self: Unpin,
fn write_f64(&mut self, n: f64) -> WriteF64<&mut Self>where
Self: Unpin,
§fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>where
Self: Unpin,
fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>where
Self: Unpin,
§fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>where
Self: Unpin,
fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>where
Self: Unpin,
§fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>where
Self: Unpin,
fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>where
Self: Unpin,
§fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>where
Self: Unpin,
fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>where
Self: Unpin,
§fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>where
Self: Unpin,
fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>where
Self: Unpin,
§fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>where
Self: Unpin,
fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>where
Self: Unpin,
§fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>where
Self: Unpin,
fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>where
Self: Unpin,
§fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>where
Self: Unpin,
fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>where
Self: Unpin,
§fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>where
Self: Unpin,
fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>where
Self: Unpin,
§fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>where
Self: Unpin,
fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>where
Self: Unpin,
§impl<T> AsyncWriteOwned for T
impl<T> AsyncWriteOwned for T
§fn poll_write_owned<B>(
&mut self,
cx: &mut Context<'_>,
slot: &mut BufSlot<B>,
) -> Poll<Result<usize, Error>>where
B: IoBuf,
fn poll_write_owned<B>(
&mut self,
cx: &mut Context<'_>,
slot: &mut BufSlot<B>,
) -> Poll<Result<usize, Error>>where
B: IoBuf,
[0, buf_len)
of the buffer in slot, returning the bytes written. The buffer is moved
through the write op (readiness: borrowed-then-restored; completion /
SEND_ZC: moved into the op, slot left InFlight, returned on the NOTIF) and
left back in slot on Ready. The caller advances its own cursor by the
returned count.§fn poll_flush_owned(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Error>>
fn poll_flush_owned(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Error>>
§fn poll_shutdown_owned(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Result<(), Error>>
fn poll_shutdown_owned( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>
§fn is_write_vectored_owned(&self) -> bool
fn is_write_vectored_owned(&self) -> bool
tokio::io::AsyncWrite::is_write_vectored]), lets a frame encoder pick a
chain threshold. Defaults to false, the blanket-over-tokio impl and thin
adapters forward the underlying writer’s answer.§fn write_owned<B>(
&mut self,
buf: B,
) -> impl Future<Output = (Result<usize, Error>, B)> + Send
fn write_owned<B>( &mut self, buf: B, ) -> impl Future<Output = (Result<usize, Error>, B)> + Send
poll_write_owned:
move buf in, issue one write, hand it back with the bytes written. Not
a second impl: every owned writer gets it for free. Read more§fn flush_owned(&mut self) -> impl Future<Output = Result<(), Error>> + Sendwhere
Self: Send,
fn flush_owned(&mut self) -> impl Future<Output = Result<(), Error>> + Sendwhere
Self: Send,
poll_flush_owned.§fn shutdown_owned(&mut self) -> impl Future<Output = Result<(), Error>> + Sendwhere
Self: Send,
fn shutdown_owned(&mut self) -> impl Future<Output = Result<(), Error>> + Sendwhere
Self: Send,
poll_shutdown_owned.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<IO> IntoHttpTransport for IO
impl<IO> IntoHttpTransport for IO
type Stream = IO
§fn supports_http_version(version: Version) -> bool
fn supports_http_version(version: Version) -> bool
fn into_http_transport(self) -> HttpTransport<<IO as IntoHttpTransport>::Stream>
§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::Requestimpl<T> Io for Twhere
T: AsyncRead + AsyncWrite + Send + 'static,
§impl<T> PeekIoProvider for Twhere
T: Io,
impl<T> PeekIoProvider for Twhere
T: Io,
§type Mapped<PeekedIo: Io> = PeekedIo
type Mapped<PeekedIo: Io> = PeekedIo
Self type produced as a result of
mapping the PeekIo type.§fn peek_io_mut(&mut self) -> &mut <T as PeekIoProvider>::PeekIo
fn peek_io_mut(&mut self) -> &mut <T as PeekIoProvider>::PeekIo
§fn map_peek_io<PeekedIo, F>(
self,
map: F,
) -> <T as PeekIoProvider>::Mapped<PeekedIo>
fn map_peek_io<PeekedIo, F>( self, map: F, ) -> <T as PeekIoProvider>::Mapped<PeekedIo>
self
by mapping the Peeked Io type and produce a new type,
usually with the peeked data in-memory as prefix.§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§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<IO> Throttleable for IOwhere
IO: Io,
impl<IO> Throttleable for IOwhere
IO: Io,
§type Throttled = ThrottledIo<IO>
type Throttled = ThrottledIo<IO>
§fn throttle(self, config: &ThrottleConfig) -> <IO as Throttleable>::Throttled
fn throttle(self, config: &ThrottleConfig) -> <IO as Throttleable>::Throttled
self as configured.