Sha256: 6ae40b4bc8fc41572abad2d013285d78d8df445868d41fac77bde508ec9bc1a5

Contents?: true

Size: 1.39 KB

Versions: 27

Compression:

Stored size: 1.39 KB

Contents

use futures_core::task::{Context, Poll};
use futures_io::{AsyncBufRead, AsyncRead};
use std::fmt;
use std::io;
use std::pin::Pin;

/// Reader for the [`empty()`] function.
#[must_use = "readers do nothing unless polled"]
pub struct Empty {
    _priv: (),
}

/// Constructs a new handle to an empty reader.
///
/// All reads from the returned reader will return `Poll::Ready(Ok(0))`.
///
/// # Examples
///
/// A slightly sad example of not reading anything into a buffer:
///
/// ```
/// # futures::executor::block_on(async {
/// use futures::io::{self, AsyncReadExt};
///
/// let mut buffer = String::new();
/// let mut reader = io::empty();
/// reader.read_to_string(&mut buffer).await?;
/// assert!(buffer.is_empty());
/// # Ok::<(), Box<dyn std::error::Error>>(()) }).unwrap();
/// ```
pub fn empty() -> Empty {
    Empty { _priv: () }
}

impl AsyncRead for Empty {
    #[inline]
    fn poll_read(
        self: Pin<&mut Self>,
        _: &mut Context<'_>,
        _: &mut [u8],
    ) -> Poll<io::Result<usize>> {
        Poll::Ready(Ok(0))
    }
}

impl AsyncBufRead for Empty {
    #[inline]
    fn poll_fill_buf(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<io::Result<&[u8]>> {
        Poll::Ready(Ok(&[]))
    }
    #[inline]
    fn consume(self: Pin<&mut Self>, _: usize) {}
}

impl fmt::Debug for Empty {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        f.pad("Empty { .. }")
    }
}

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
wasmtime-30.0.2 ./ext/cargo-vendor/futures-util-0.3.31/src/io/empty.rs
wasmtime-29.0.0 ./ext/cargo-vendor/futures-util-0.3.31/src/io/empty.rs
wasmtime-28.0.0 ./ext/cargo-vendor/futures-util-0.3.31/src/io/empty.rs
wasmtime-27.0.0 ./ext/cargo-vendor/futures-util-0.3.31/src/io/empty.rs
wasmtime-26.0.0 ./ext/cargo-vendor/futures-util-0.3.31/src/io/empty.rs
wasmtime-25.0.2 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-25.0.1 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-25.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-24.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-23.0.2 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-22.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-21.0.1 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-20.0.2 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-20.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-18.0.3 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-17.0.1 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-17.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-16.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-15.0.1 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs
wasmtime-15.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/io/empty.rs