pub struct UnixStream { /* private fields */ }net only.Expand description
A Unix stream between two local sockets on Windows & WSL.
A Unix stream can either be created by connecting to an endpoint, via the
connect method, or by accepting a connection from a listener.
§Examples
use compio_io::AsyncWrite;
use compio_net::UnixStream;
// Connect to a peer
let mut stream = UnixStream::connect("unix-server.sock").await.unwrap();
// Write some data.
stream.write("hello world!").await.unwrap();Implementations§
Source§impl UnixStream
impl UnixStream
Sourcepub async fn connect(path: impl AsRef<Path>) -> Result<UnixStream, Error>
pub async fn connect(path: impl AsRef<Path>) -> Result<UnixStream, Error>
Opens a Unix connection to the specified file path. See
UnixStream::connect_addr for more details.
Sourcepub async fn connect_addr(addr: &SockAddr) -> Result<UnixStream, Error>
pub async fn connect_addr(addr: &SockAddr) -> Result<UnixStream, Error>
Opens a Unix connection to the specified address. There must be a
UnixListener or equivalent listening on the corresponding Unix
domain socket to successfully connect and return a UnixStream.
To configure the socket before connecting, you can use the
UnixSocket type.
Sourcepub fn from_std(stream: UnixStream) -> Result<UnixStream, Error>
Available on Unix only.
pub fn from_std(stream: UnixStream) -> Result<UnixStream, Error>
Creates new UnixStream from a std::os::unix::net::UnixStream.
Sourcepub fn close(self) -> impl Future<Output = Result<(), Error>>
pub fn close(self) -> impl Future<Output = Result<(), Error>>
Close the socket. If the returned future is dropped before polling, the socket won’t be closed.
See TcpStream::close for more details.
Sourcepub fn peer_addr(&self) -> Result<SockAddr, Error>
pub fn peer_addr(&self) -> Result<SockAddr, Error>
Returns the socket path of the remote peer of this connection.
Sourcepub fn local_addr(&self) -> Result<SockAddr, Error>
pub fn local_addr(&self) -> Result<SockAddr, Error>
Returns the socket path of the local half of this connection.
Sourcepub fn take_error(&self) -> Result<Option<Error>, Error>
pub fn take_error(&self) -> Result<Option<Error>, Error>
Returns the value of the SO_ERROR option.
Sourcepub fn split(&self) -> (ReadHalf<'_, UnixStream>, WriteHalf<'_, UnixStream>)
pub fn split(&self) -> (ReadHalf<'_, UnixStream>, WriteHalf<'_, UnixStream>)
Splits a UnixStream into a read half and a write half, which can be
used to read and write the stream concurrently.
This method is more efficient than
into_split, but the halves cannot
be moved into independently spawned tasks.
Sourcepub fn into_split(self) -> (UnixStream, UnixStream)
pub fn into_split(self) -> (UnixStream, UnixStream)
Splits a UnixStream into a read half and a write half, which can be
used to read and write the stream concurrently.
Unlike split, the owned halves can be moved to
separate tasks.
Trait Implementations§
Source§impl AsFd for UnixStream
Available on Unix only.
impl AsFd for UnixStream
Source§fn as_fd(&self) -> BorrowedFd<'_>
fn as_fd(&self) -> BorrowedFd<'_>
Source§impl AsRawFd for UnixStream
impl AsRawFd for UnixStream
Source§impl AsyncRead for &UnixStream
impl AsyncRead for &UnixStream
Source§impl AsyncRead for UnixStream
impl AsyncRead for UnixStream
Source§impl AsyncReadAncillary for &UnixStream
impl AsyncReadAncillary for &UnixStream
Source§async fn read_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<(usize, usize), (T, C)>
async fn read_with_ancillary<T, C>( &mut self, buffer: T, control: C, ) -> BufResult<(usize, usize), (T, C)>
Source§async fn read_vectored_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<(usize, usize), (T, C)>where
T: IoVectoredBufMut,
C: IoBufMut,
async fn read_vectored_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<(usize, usize), (T, C)>where
T: IoVectoredBufMut,
C: IoBufMut,
Source§impl AsyncReadAncillary for UnixStream
impl AsyncReadAncillary for UnixStream
Source§async fn read_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<(usize, usize), (T, C)>
async fn read_with_ancillary<T, C>( &mut self, buffer: T, control: C, ) -> BufResult<(usize, usize), (T, C)>
Source§async fn read_vectored_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<(usize, usize), (T, C)>where
T: IoVectoredBufMut,
C: IoBufMut,
async fn read_vectored_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<(usize, usize), (T, C)>where
T: IoVectoredBufMut,
C: IoBufMut,
Source§impl AsyncReadAncillaryManaged for &UnixStream
impl AsyncReadAncillaryManaged for &UnixStream
Source§async fn read_managed_with_ancillary<C>(
&mut self,
len: usize,
control: C,
) -> Result<Option<(<&UnixStream as AsyncReadManaged>::Buffer, C)>, Error>where
C: IoBufMut,
async fn read_managed_with_ancillary<C>(
&mut self,
len: usize,
control: C,
) -> Result<Option<(<&UnixStream as AsyncReadManaged>::Buffer, C)>, Error>where
C: IoBufMut,
Source§impl AsyncReadAncillaryManaged for UnixStream
impl AsyncReadAncillaryManaged for UnixStream
Source§async fn read_managed_with_ancillary<C>(
&mut self,
len: usize,
control: C,
) -> Result<Option<(<UnixStream as AsyncReadManaged>::Buffer, C)>, Error>where
C: IoBufMut,
async fn read_managed_with_ancillary<C>(
&mut self,
len: usize,
control: C,
) -> Result<Option<(<UnixStream as AsyncReadManaged>::Buffer, C)>, Error>where
C: IoBufMut,
Source§impl AsyncReadAncillaryMulti for &UnixStream
impl AsyncReadAncillaryMulti for &UnixStream
Source§type Return = RecvMsgMultiResult
type Return = RecvMsgMultiResult
Source§fn read_multi_with_ancillary(
&mut self,
control_len: usize,
) -> impl Stream<Item = Result<<&UnixStream as AsyncReadAncillaryMulti>::Return, Error>>
fn read_multi_with_ancillary( &mut self, control_len: usize, ) -> impl Stream<Item = Result<<&UnixStream as AsyncReadAncillaryMulti>::Return, Error>>
Source§impl AsyncReadAncillaryMulti for UnixStream
impl AsyncReadAncillaryMulti for UnixStream
Source§type Return = RecvMsgMultiResult
type Return = RecvMsgMultiResult
Source§fn read_multi_with_ancillary(
&mut self,
control_len: usize,
) -> impl Stream<Item = Result<<UnixStream as AsyncReadAncillaryMulti>::Return, Error>>
fn read_multi_with_ancillary( &mut self, control_len: usize, ) -> impl Stream<Item = Result<<UnixStream as AsyncReadAncillaryMulti>::Return, Error>>
Source§impl AsyncReadManaged for &UnixStream
impl AsyncReadManaged for &UnixStream
Source§async fn read_managed(
&mut self,
len: usize,
) -> Result<Option<<&UnixStream as AsyncReadManaged>::Buffer>, Error>
async fn read_managed( &mut self, len: usize, ) -> Result<Option<<&UnixStream as AsyncReadManaged>::Buffer>, Error>
Self::Buffer. Read moreSource§impl AsyncReadManaged for UnixStream
impl AsyncReadManaged for UnixStream
Source§async fn read_managed(
&mut self,
len: usize,
) -> Result<Option<<UnixStream as AsyncReadManaged>::Buffer>, Error>
async fn read_managed( &mut self, len: usize, ) -> Result<Option<<UnixStream as AsyncReadManaged>::Buffer>, Error>
Self::Buffer. Read moreSource§impl AsyncReadMulti for &UnixStream
impl AsyncReadMulti for &UnixStream
Source§fn read_multi(
&mut self,
len: usize,
) -> impl Stream<Item = Result<<&UnixStream as AsyncReadManaged>::Buffer, Error>>
fn read_multi( &mut self, len: usize, ) -> impl Stream<Item = Result<<&UnixStream as AsyncReadManaged>::Buffer, Error>>
AsyncReadManaged::Buffer. Read moreSource§impl AsyncReadMulti for UnixStream
impl AsyncReadMulti for UnixStream
Source§fn read_multi(
&mut self,
len: usize,
) -> impl Stream<Item = Result<<UnixStream as AsyncReadManaged>::Buffer, Error>>
fn read_multi( &mut self, len: usize, ) -> impl Stream<Item = Result<<UnixStream as AsyncReadManaged>::Buffer, Error>>
AsyncReadManaged::Buffer. Read moreSource§impl AsyncWrite for &UnixStream
impl AsyncWrite for &UnixStream
Source§async fn write_vectored<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoVectoredBuf,
async fn write_vectored<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoVectoredBuf,
write, except that it write bytes from a buffer implements
IoVectoredBuf into the source. Read moreSource§impl AsyncWrite for UnixStream
impl AsyncWrite for UnixStream
Source§async fn write_vectored<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoVectoredBuf,
async fn write_vectored<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoVectoredBuf,
write, except that it write bytes from a buffer implements
IoVectoredBuf into the source. Read moreSource§impl AsyncWriteAncillary for &UnixStream
impl AsyncWriteAncillary for &UnixStream
Source§async fn write_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<usize, (T, C)>
async fn write_with_ancillary<T, C>( &mut self, buffer: T, control: C, ) -> BufResult<usize, (T, C)>
Source§async fn write_vectored_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<usize, (T, C)>where
T: IoVectoredBuf,
C: IoBuf,
async fn write_vectored_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<usize, (T, C)>where
T: IoVectoredBuf,
C: IoBuf,
Source§impl AsyncWriteAncillary for UnixStream
§Example
Send and receive a file descriptor over a Unix socket pair using
SCM_RIGHTS:
impl AsyncWriteAncillary for UnixStream
§Example
Send and receive a file descriptor over a Unix socket pair using
SCM_RIGHTS:
use std::os::unix::io::RawFd;
use compio_io::ancillary::*;
use compio_net::UnixStream;
const BUF_SIZE: usize = ancillary_space::<RawFd>();
// Create a socket pair.
let (std_a, std_b) = std::os::unix::net::UnixStream::pair().unwrap();
let mut a = UnixStream::from_std(std_a).unwrap();
let mut b = UnixStream::from_std(std_b).unwrap();
// Pass fd 0 (stdin) as ancillary data via SCM_RIGHTS.
let mut ctrl_send = AncillaryBuf::<BUF_SIZE>::new();
let mut builder = ctrl_send.builder();
builder
.push(libc::SOL_SOCKET, libc::SCM_RIGHTS, &(0 as RawFd))
.unwrap();
// Send the payload together with the ancillary data.
a.write_with_ancillary(b"hello", ctrl_send).await.0.unwrap();
// Receive on the other end.
let payload = Vec::with_capacity(5);
let ctrl_recv = AncillaryBuf::<BUF_SIZE>::new();
let ((_, ctrl_len), (payload, ctrl_recv)) =
b.read_with_ancillary(payload, ctrl_recv).await.unwrap();
assert_eq!(&payload[..], b"hello");
// Parse the received ancillary messages.
let mut iter = unsafe { AncillaryIter::new(&ctrl_recv[..ctrl_len]) };
let msg = iter.next().unwrap();
assert_eq!(msg.level(), libc::SOL_SOCKET);
assert_eq!(msg.ty(), libc::SCM_RIGHTS);
// The kernel duplicates the fd, so the received value may differ.
let _received_fd = unsafe { msg.data::<RawFd>() };
assert!(iter.next().is_none());Source§async fn write_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<usize, (T, C)>
async fn write_with_ancillary<T, C>( &mut self, buffer: T, control: C, ) -> BufResult<usize, (T, C)>
Source§async fn write_vectored_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<usize, (T, C)>where
T: IoVectoredBuf,
C: IoBuf,
async fn write_vectored_with_ancillary<T, C>(
&mut self,
buffer: T,
control: C,
) -> BufResult<usize, (T, C)>where
T: IoVectoredBuf,
C: IoBuf,
Source§impl AsyncWriteAncillaryZerocopy for &UnixStream
impl AsyncWriteAncillaryZerocopy for &UnixStream
Source§type BufferReadyFuture<T: IoBuf, C: IoBuf> = Extract<Zerocopy<SendMsgZc<[T; 1], C, SharedFd<Socket>>>, T, C>
type BufferReadyFuture<T: IoBuf, C: IoBuf> = Extract<Zerocopy<SendMsgZc<[T; 1], C, SharedFd<Socket>>>, T, C>
Source§type VectoredBufferReadyFuture<T: IoVectoredBuf, C: IoBuf> = Zerocopy<SendMsgZc<T, C, SharedFd<Socket>>>
type VectoredBufferReadyFuture<T: IoVectoredBuf, C: IoBuf> = Zerocopy<SendMsgZc<T, C, SharedFd<Socket>>>
Source§async fn write_zerocopy_with_ancillary<T, C>(
&mut self,
buf: T,
control: C,
) -> BufResult<usize, <&UnixStream as AsyncWriteAncillaryZerocopy>::BufferReadyFuture<T, C>>
async fn write_zerocopy_with_ancillary<T, C>( &mut self, buf: T, control: C, ) -> BufResult<usize, <&UnixStream as AsyncWriteAncillaryZerocopy>::BufferReadyFuture<T, C>>
Source§async fn write_zerocopy_vectored_with_ancillary<T, C>(
&mut self,
buf: T,
control: C,
) -> BufResult<usize, <&UnixStream as AsyncWriteAncillaryZerocopy>::VectoredBufferReadyFuture<T, C>>where
T: IoVectoredBuf,
C: IoBuf,
async fn write_zerocopy_vectored_with_ancillary<T, C>(
&mut self,
buf: T,
control: C,
) -> BufResult<usize, <&UnixStream as AsyncWriteAncillaryZerocopy>::VectoredBufferReadyFuture<T, C>>where
T: IoVectoredBuf,
C: IoBuf,
write_zerocopy_with_ancillary, except that it writes from a
buffer implements IoVectoredBuf into the source.Source§impl AsyncWriteAncillaryZerocopy for UnixStream
impl AsyncWriteAncillaryZerocopy for UnixStream
Source§type BufferReadyFuture<T: IoBuf, C: IoBuf> = Extract<Zerocopy<SendMsgZc<[T; 1], C, SharedFd<Socket>>>, T, C>
type BufferReadyFuture<T: IoBuf, C: IoBuf> = Extract<Zerocopy<SendMsgZc<[T; 1], C, SharedFd<Socket>>>, T, C>
Source§type VectoredBufferReadyFuture<T: IoVectoredBuf, C: IoBuf> = Zerocopy<SendMsgZc<T, C, SharedFd<Socket>>>
type VectoredBufferReadyFuture<T: IoVectoredBuf, C: IoBuf> = Zerocopy<SendMsgZc<T, C, SharedFd<Socket>>>
Source§async fn write_zerocopy_with_ancillary<T, C>(
&mut self,
buf: T,
control: C,
) -> BufResult<usize, <UnixStream as AsyncWriteAncillaryZerocopy>::BufferReadyFuture<T, C>>
async fn write_zerocopy_with_ancillary<T, C>( &mut self, buf: T, control: C, ) -> BufResult<usize, <UnixStream as AsyncWriteAncillaryZerocopy>::BufferReadyFuture<T, C>>
Source§async fn write_zerocopy_vectored_with_ancillary<T, C>(
&mut self,
buf: T,
control: C,
) -> BufResult<usize, <UnixStream as AsyncWriteAncillaryZerocopy>::VectoredBufferReadyFuture<T, C>>where
T: IoVectoredBuf,
C: IoBuf,
async fn write_zerocopy_vectored_with_ancillary<T, C>(
&mut self,
buf: T,
control: C,
) -> BufResult<usize, <UnixStream as AsyncWriteAncillaryZerocopy>::VectoredBufferReadyFuture<T, C>>where
T: IoVectoredBuf,
C: IoBuf,
write_zerocopy_with_ancillary, except that it writes from a
buffer implements IoVectoredBuf into the source.Source§impl AsyncWriteZerocopy for &UnixStream
impl AsyncWriteZerocopy for &UnixStream
Source§type BufferReadyFuture<T: IoBuf> = Zerocopy<SendZc<T, SharedFd<Socket>>>
type BufferReadyFuture<T: IoBuf> = Zerocopy<SendZc<T, SharedFd<Socket>>>
Source§type VectoredBufferReadyFuture<T: IoVectoredBuf> = Zerocopy<SendVectoredZc<T, SharedFd<Socket>>>
type VectoredBufferReadyFuture<T: IoVectoredBuf> = Zerocopy<SendVectoredZc<T, SharedFd<Socket>>>
Source§async fn write_zerocopy<T>(
&mut self,
buf: T,
) -> BufResult<usize, <&UnixStream as AsyncWriteZerocopy>::BufferReadyFuture<T>>where
T: IoBuf,
async fn write_zerocopy<T>(
&mut self,
buf: T,
) -> BufResult<usize, <&UnixStream as AsyncWriteZerocopy>::BufferReadyFuture<T>>where
T: IoBuf,
Source§async fn write_zerocopy_vectored<T>(
&mut self,
buf: T,
) -> BufResult<usize, <&UnixStream as AsyncWriteZerocopy>::VectoredBufferReadyFuture<T>>where
T: IoVectoredBuf,
async fn write_zerocopy_vectored<T>(
&mut self,
buf: T,
) -> BufResult<usize, <&UnixStream as AsyncWriteZerocopy>::VectoredBufferReadyFuture<T>>where
T: IoVectoredBuf,
write_zerocopy, except that it writes from a buffer implements
IoVectoredBuf into the source.Source§impl AsyncWriteZerocopy for UnixStream
impl AsyncWriteZerocopy for UnixStream
Source§type BufferReadyFuture<T: IoBuf> = Zerocopy<SendZc<T, SharedFd<Socket>>>
type BufferReadyFuture<T: IoBuf> = Zerocopy<SendZc<T, SharedFd<Socket>>>
Source§type VectoredBufferReadyFuture<T: IoVectoredBuf> = Zerocopy<SendVectoredZc<T, SharedFd<Socket>>>
type VectoredBufferReadyFuture<T: IoVectoredBuf> = Zerocopy<SendVectoredZc<T, SharedFd<Socket>>>
Source§async fn write_zerocopy<T>(
&mut self,
buf: T,
) -> BufResult<usize, <UnixStream as AsyncWriteZerocopy>::BufferReadyFuture<T>>where
T: IoBuf,
async fn write_zerocopy<T>(
&mut self,
buf: T,
) -> BufResult<usize, <UnixStream as AsyncWriteZerocopy>::BufferReadyFuture<T>>where
T: IoBuf,
Source§async fn write_zerocopy_vectored<T>(
&mut self,
buf: T,
) -> BufResult<usize, <UnixStream as AsyncWriteZerocopy>::VectoredBufferReadyFuture<T>>where
T: IoVectoredBuf,
async fn write_zerocopy_vectored<T>(
&mut self,
buf: T,
) -> BufResult<usize, <UnixStream as AsyncWriteZerocopy>::VectoredBufferReadyFuture<T>>where
T: IoVectoredBuf,
write_zerocopy, except that it writes from a buffer implements
IoVectoredBuf into the source.Source§impl Clone for UnixStream
impl Clone for UnixStream
Source§fn clone(&self) -> UnixStream
fn clone(&self) -> UnixStream
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UnixStream
impl Debug for UnixStream
Source§impl FromRawFd for UnixStream
Available on Unix only.
impl FromRawFd for UnixStream
Source§unsafe fn from_raw_fd(fd: i32) -> UnixStream
unsafe fn from_raw_fd(fd: i32) -> UnixStream
Self from the given raw file
descriptor. Read moreSource§impl<'a> Splittable for &'a UnixStream
impl<'a> Splittable for &'a UnixStream
Source§type ReadHalf = ReadHalf<'a, UnixStream>
type ReadHalf = ReadHalf<'a, UnixStream>
AsyncRead or
AsyncReadAt.Source§type WriteHalf = WriteHalf<'a, UnixStream>
type WriteHalf = WriteHalf<'a, UnixStream>
AsyncWrite or
AsyncWriteAt.Source§fn split(
self,
) -> (<&'a UnixStream as Splittable>::ReadHalf, <&'a UnixStream as Splittable>::WriteHalf)
fn split( self, ) -> (<&'a UnixStream as Splittable>::ReadHalf, <&'a UnixStream as Splittable>::WriteHalf)
self and returns a tuple containing separate read and write
halves. Read moreSource§impl<'a> Splittable for &'a mut UnixStream
impl<'a> Splittable for &'a mut UnixStream
Source§type ReadHalf = ReadHalf<'a, UnixStream>
type ReadHalf = ReadHalf<'a, UnixStream>
AsyncRead or
AsyncReadAt.Source§type WriteHalf = WriteHalf<'a, UnixStream>
type WriteHalf = WriteHalf<'a, UnixStream>
AsyncWrite or
AsyncWriteAt.Source§fn split(
self,
) -> (<&'a mut UnixStream as Splittable>::ReadHalf, <&'a mut UnixStream as Splittable>::WriteHalf)
fn split( self, ) -> (<&'a mut UnixStream as Splittable>::ReadHalf, <&'a mut UnixStream as Splittable>::WriteHalf)
self and returns a tuple containing separate read and write
halves. Read moreSource§impl Splittable for UnixStream
impl Splittable for UnixStream
Source§type ReadHalf = UnixStream
type ReadHalf = UnixStream
AsyncRead or
AsyncReadAt.Source§type WriteHalf = UnixStream
type WriteHalf = UnixStream
AsyncWrite or
AsyncWriteAt.Source§fn split(
self,
) -> (<UnixStream as Splittable>::ReadHalf, <UnixStream as Splittable>::WriteHalf)
fn split( self, ) -> (<UnixStream as Splittable>::ReadHalf, <UnixStream as Splittable>::WriteHalf)
self and returns a tuple containing separate read and write
halves. Read moreSharedFd.Auto Trait Implementations§
impl !Freeze for UnixStream
impl RefUnwindSafe for UnixStream
impl Send for UnixStream
impl Sync for UnixStream
impl Unpin for UnixStream
impl UnsafeUnpin for UnixStream
impl UnwindSafe for UnixStream
Blanket Implementations§
§impl<T> AsSource for Twhere
T: AsFd,
impl<T> AsSource for Twhere
T: AsFd,
§fn source(&self) -> BorrowedFd<'_>
fn source(&self) -> BorrowedFd<'_>
Source§impl<A> AsyncReadExt for A
impl<A> AsyncReadExt for A
Source§async fn append<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoBufMut,
async fn append<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoBufMut,
AsyncRead::read, but it appends data to the end of the
buffer; in other words, it read to the beginning of the uninitialized
area.Source§async fn read_exact<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoBufMut,
async fn read_exact<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoBufMut,
Source§async fn read_to_string(&mut self, buf: String) -> BufResult<usize, String>
async fn read_to_string(&mut self, buf: String) -> BufResult<usize, String>
String until underlying reader reaches EOF.Source§async fn read_to_end<A>(
&mut self,
buf: Vec<u8, A>,
) -> BufResult<usize, Vec<u8, A>>where
A: Allocator + 'static,
async fn read_to_end<A>(
&mut self,
buf: Vec<u8, A>,
) -> BufResult<usize, Vec<u8, A>>where
A: Allocator + 'static,
EOF.Source§async fn read_vectored_exact<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoVectoredBufMut,
async fn read_vectored_exact<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoVectoredBufMut,
Source§fn framed<T, C, F>(
self,
codec: C,
framer: F,
) -> Framed<Self::ReadHalf, Self::WriteHalf, C, F, T, T>where
Self: Sized + Splittable,
fn framed<T, C, F>(
self,
codec: C,
framer: F,
) -> Framed<Self::ReadHalf, Self::WriteHalf, C, F, T, T>where
Self: Sized + Splittable,
framed::Framed reader/writer with the given codec and
framer.Source§fn bytes(
self,
) -> Framed<Self::ReadHalf, Self::WriteHalf, BytesCodec, NoopFramer, Bytes, Bytes>where
Self: Sized + Splittable,
fn bytes(
self,
) -> Framed<Self::ReadHalf, Self::WriteHalf, BytesCodec, NoopFramer, Bytes, Bytes>where
Self: Sized + Splittable,
bytes only.framed::BytesFramed reader/writter
out of a splittable.Source§fn take(self, limit: u64) -> Take<Self>where
Self: Sized,
fn take(self, limit: u64) -> Take<Self>where
Self: Sized,
limit bytes from it. Read moreSource§async fn read_u8(&mut self) -> Result<u8, Error>
async fn read_u8(&mut self) -> Result<u8, Error>
u8 from the underlying reader.Source§async fn read_u8_le(&mut self) -> Result<u8, Error>
async fn read_u8_le(&mut self) -> Result<u8, Error>
u8 from the underlying reader.Source§async fn read_u16(&mut self) -> Result<u16, Error>
async fn read_u16(&mut self) -> Result<u16, Error>
u16 from the underlying reader.Source§async fn read_u16_le(&mut self) -> Result<u16, Error>
async fn read_u16_le(&mut self) -> Result<u16, Error>
u16 from the underlying reader.Source§async fn read_u32(&mut self) -> Result<u32, Error>
async fn read_u32(&mut self) -> Result<u32, Error>
u32 from the underlying reader.Source§async fn read_u32_le(&mut self) -> Result<u32, Error>
async fn read_u32_le(&mut self) -> Result<u32, Error>
u32 from the underlying reader.Source§async fn read_u64(&mut self) -> Result<u64, Error>
async fn read_u64(&mut self) -> Result<u64, Error>
u64 from the underlying reader.Source§async fn read_u64_le(&mut self) -> Result<u64, Error>
async fn read_u64_le(&mut self) -> Result<u64, Error>
u64 from the underlying reader.Source§async fn read_u128(&mut self) -> Result<u128, Error>
async fn read_u128(&mut self) -> Result<u128, Error>
u128 from the underlying reader.Source§async fn read_u128_le(&mut self) -> Result<u128, Error>
async fn read_u128_le(&mut self) -> Result<u128, Error>
u128 from the underlying reader.Source§async fn read_i8(&mut self) -> Result<i8, Error>
async fn read_i8(&mut self) -> Result<i8, Error>
i8 from the underlying reader.Source§async fn read_i8_le(&mut self) -> Result<i8, Error>
async fn read_i8_le(&mut self) -> Result<i8, Error>
i8 from the underlying reader.Source§async fn read_i16(&mut self) -> Result<i16, Error>
async fn read_i16(&mut self) -> Result<i16, Error>
i16 from the underlying reader.Source§async fn read_i16_le(&mut self) -> Result<i16, Error>
async fn read_i16_le(&mut self) -> Result<i16, Error>
i16 from the underlying reader.Source§async fn read_i32(&mut self) -> Result<i32, Error>
async fn read_i32(&mut self) -> Result<i32, Error>
i32 from the underlying reader.Source§async fn read_i32_le(&mut self) -> Result<i32, Error>
async fn read_i32_le(&mut self) -> Result<i32, Error>
i32 from the underlying reader.Source§async fn read_i64(&mut self) -> Result<i64, Error>
async fn read_i64(&mut self) -> Result<i64, Error>
i64 from the underlying reader.Source§async fn read_i64_le(&mut self) -> Result<i64, Error>
async fn read_i64_le(&mut self) -> Result<i64, Error>
i64 from the underlying reader.Source§async fn read_i128(&mut self) -> Result<i128, Error>
async fn read_i128(&mut self) -> Result<i128, Error>
i128 from the underlying reader.Source§async fn read_i128_le(&mut self) -> Result<i128, Error>
async fn read_i128_le(&mut self) -> Result<i128, Error>
i128 from the underlying reader.Source§async fn read_f32(&mut self) -> Result<f32, Error>
async fn read_f32(&mut self) -> Result<f32, Error>
f32 from the underlying reader.Source§async fn read_f32_le(&mut self) -> Result<f32, Error>
async fn read_f32_le(&mut self) -> Result<f32, Error>
f32 from the underlying reader.Source§impl<A> AsyncWriteExt for Awhere
A: AsyncWrite + ?Sized,
impl<A> AsyncWriteExt for Awhere
A: AsyncWrite + ?Sized,
Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
AsyncWrite. Read moreSource§async fn write_all<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoBuf,
async fn write_all<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoBuf,
Source§async fn write_vectored_all<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoVectoredBuf,
async fn write_vectored_all<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoVectoredBuf,
AsyncWrite::write_vectored, except that it tries to write the entire
contents of the buffer into this writer.Source§fn framed<T, C, F>(
self,
codec: C,
framer: F,
) -> Framed<Self::ReadHalf, Self::WriteHalf, C, F, T, T>where
Self: Sized + Splittable,
fn framed<T, C, F>(
self,
codec: C,
framer: F,
) -> Framed<Self::ReadHalf, Self::WriteHalf, C, F, T, T>where
Self: Sized + Splittable,
framed::Framed reader/writer with the given codec and
framer.Source§fn bytes(
self,
) -> Framed<Self::ReadHalf, Self::WriteHalf, BytesCodec, NoopFramer, Bytes, Bytes>where
Self: Sized + Splittable,
fn bytes(
self,
) -> Framed<Self::ReadHalf, Self::WriteHalf, BytesCodec, NoopFramer, Bytes, Bytes>where
Self: Sized + Splittable,
bytes only.framed::BytesFramed reader/writer
out of a splittable.Source§fn write_only(self) -> WriteOnly<Self>where
Self: Sized,
fn write_only(self) -> WriteOnly<Self>where
Self: Sized,
Source§async fn write_u8(&mut self, num: u8) -> Result<(), Error>
async fn write_u8(&mut self, num: u8) -> Result<(), Error>
u8 into the underlying writer.Source§async fn write_u8_le(&mut self, num: u8) -> Result<(), Error>
async fn write_u8_le(&mut self, num: u8) -> Result<(), Error>
u8 into the underlying writer.Source§async fn write_u16(&mut self, num: u16) -> Result<(), Error>
async fn write_u16(&mut self, num: u16) -> Result<(), Error>
u16 into the underlying writer.Source§async fn write_u16_le(&mut self, num: u16) -> Result<(), Error>
async fn write_u16_le(&mut self, num: u16) -> Result<(), Error>
u16 into the underlying writer.Source§async fn write_u32(&mut self, num: u32) -> Result<(), Error>
async fn write_u32(&mut self, num: u32) -> Result<(), Error>
u32 into the underlying writer.Source§async fn write_u32_le(&mut self, num: u32) -> Result<(), Error>
async fn write_u32_le(&mut self, num: u32) -> Result<(), Error>
u32 into the underlying writer.Source§async fn write_u64(&mut self, num: u64) -> Result<(), Error>
async fn write_u64(&mut self, num: u64) -> Result<(), Error>
u64 into the underlying writer.Source§async fn write_u64_le(&mut self, num: u64) -> Result<(), Error>
async fn write_u64_le(&mut self, num: u64) -> Result<(), Error>
u64 into the underlying writer.Source§async fn write_u128(&mut self, num: u128) -> Result<(), Error>
async fn write_u128(&mut self, num: u128) -> Result<(), Error>
u128 into the underlying writer.Source§async fn write_u128_le(&mut self, num: u128) -> Result<(), Error>
async fn write_u128_le(&mut self, num: u128) -> Result<(), Error>
u128 into the underlying writer.Source§async fn write_i8(&mut self, num: i8) -> Result<(), Error>
async fn write_i8(&mut self, num: i8) -> Result<(), Error>
i8 into the underlying writer.Source§async fn write_i8_le(&mut self, num: i8) -> Result<(), Error>
async fn write_i8_le(&mut self, num: i8) -> Result<(), Error>
i8 into the underlying writer.Source§async fn write_i16(&mut self, num: i16) -> Result<(), Error>
async fn write_i16(&mut self, num: i16) -> Result<(), Error>
i16 into the underlying writer.Source§async fn write_i16_le(&mut self, num: i16) -> Result<(), Error>
async fn write_i16_le(&mut self, num: i16) -> Result<(), Error>
i16 into the underlying writer.Source§async fn write_i32(&mut self, num: i32) -> Result<(), Error>
async fn write_i32(&mut self, num: i32) -> Result<(), Error>
i32 into the underlying writer.Source§async fn write_i32_le(&mut self, num: i32) -> Result<(), Error>
async fn write_i32_le(&mut self, num: i32) -> Result<(), Error>
i32 into the underlying writer.Source§async fn write_i64(&mut self, num: i64) -> Result<(), Error>
async fn write_i64(&mut self, num: i64) -> Result<(), Error>
i64 into the underlying writer.Source§async fn write_i64_le(&mut self, num: i64) -> Result<(), Error>
async fn write_i64_le(&mut self, num: i64) -> Result<(), Error>
i64 into the underlying writer.Source§async fn write_i128(&mut self, num: i128) -> Result<(), Error>
async fn write_i128(&mut self, num: i128) -> Result<(), Error>
i128 into the underlying writer.Source§async fn write_i128_le(&mut self, num: i128) -> Result<(), Error>
async fn write_i128_le(&mut self, num: i128) -> Result<(), Error>
i128 into the underlying writer.Source§async fn write_f32(&mut self, num: f32) -> Result<(), Error>
async fn write_f32(&mut self, num: f32) -> Result<(), Error>
f32 into the underlying writer.Source§async fn write_f32_le(&mut self, num: f32) -> Result<(), Error>
async fn write_f32_le(&mut self, num: f32) -> Result<(), Error>
f32 into the underlying writer.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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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 moreSource§impl<S> IntoMaybeTlsStream<S> for Swhere
S: Splittable,
impl<S> IntoMaybeTlsStream<S> for Swhere
S: Splittable,
Source§fn into_maybe_tls_stream(
self,
capacity: usize,
max_buffer_size: usize,
) -> MaybeTlsStream<S>
fn into_maybe_tls_stream( self, capacity: usize, max_buffer_size: usize, ) -> MaybeTlsStream<S>
MaybeTlsStream with capacity and buffer size limit.