[][src]Trait tokio::io::AsyncRead

pub trait AsyncRead {
    fn poll_read(
        self: Pin<&mut Self>,
        cx: &mut Context<'_>,
        buf: &mut ReadBuf<'_>
    ) -> Poll<Result<()>>; }

Reads bytes from a source.

This trait is analogous to the std::io::Read trait, but integrates with the asynchronous task system. In particular, the poll_read method, unlike Read::read, will automatically queue the current task for wakeup and return if data is not yet available, rather than blocking the calling thread.

Specifically, this means that the poll_read function will return one of the following:

This trait importantly means that the read method only works in the context of a future's task. The object may panic if used outside of a task.

Utilities for working with AsyncRead values are provided by AsyncReadExt.

Required methods

fn poll_read(
    self: Pin<&mut Self>,
    cx: &mut Context<'_>,
    buf: &mut ReadBuf<'_>
) -> Poll<Result<()>>

Attempts to read from the AsyncRead into buf.

On success, returns Poll::Ready(Ok(())) and fills buf with data read. If no data was read (buf.filled().is_empty()) it implies that EOF has been reached.

If no data is available for reading, the method returns Poll::Pending and arranges for the current task (via cx.waker()) to receive a notification when the object becomes readable or is closed.

Loading content...

Implementations on Foreign Types

impl<T: ?Sized + AsyncRead + Unpin> AsyncRead for Box<T>[src]

impl<T: ?Sized + AsyncRead + Unpin, '_> AsyncRead for &'_ mut T[src]

impl<P> AsyncRead for Pin<P> where
    P: DerefMut + Unpin,
    P::Target: AsyncRead
[src]

impl<'_> AsyncRead for &'_ [u8][src]

impl<T: AsRef<[u8]> + Unpin> AsyncRead for Cursor<T>[src]

Loading content...

Implementors

impl AsyncRead for TcpStream[src]

impl AsyncRead for UnixStream[src]

impl AsyncRead for tokio::net::tcp::OwnedReadHalf[src]

impl AsyncRead for tokio::net::unix::OwnedReadHalf[src]

impl<'_> AsyncRead for tokio::net::tcp::ReadHalf<'_>[src]

impl<'_> AsyncRead for tokio::net::unix::ReadHalf<'_>[src]

Loading content...