Sha256: 60262bf3ef48c09b4d52e52953f9437d536e20f63690b73e975388751405d239
Contents?: true
Size: 1.41 KB
Versions: 27
Compression:
Stored size: 1.41 KB
Contents
use super::assert_sink; use crate::never::Never; use core::marker::PhantomData; use core::pin::Pin; use futures_core::task::{Context, Poll}; use futures_sink::Sink; /// Sink for the [`drain`] function. #[derive(Debug)] #[must_use = "sinks do nothing unless polled"] pub struct Drain<T> { marker: PhantomData<T>, } /// Create a sink that will just discard all items given to it. /// /// Similar to [`io::Sink`](::std::io::Sink). /// /// # Examples /// /// ``` /// # futures::executor::block_on(async { /// use futures::sink::{self, SinkExt}; /// /// let mut drain = sink::drain(); /// drain.send(5).await?; /// # Ok::<(), futures::never::Never>(()) }).unwrap(); /// ``` pub fn drain<T>() -> Drain<T> { assert_sink::<T, Never, _>(Drain { marker: PhantomData }) } impl<T> Unpin for Drain<T> {} impl<T> Clone for Drain<T> { fn clone(&self) -> Self { drain() } } impl<T> Sink<T> for Drain<T> { type Error = Never; fn poll_ready(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> { Poll::Ready(Ok(())) } fn start_send(self: Pin<&mut Self>, _item: T) -> Result<(), Self::Error> { Ok(()) } fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> { Poll::Ready(Ok(())) } fn poll_close(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> { Poll::Ready(Ok(())) } }
Version data entries
27 entries across 27 versions & 1 rubygems