monoio/io/sink/
sink_ext.rs

1use std::future::Future;
2
3use super::Sink;
4
5/// Sink extensions.
6pub trait SinkExt<T>: Sink<T> {
7    /// Send and flush.
8    fn send_and_flush(&mut self, item: T) -> impl Future<Output = Result<(), Self::Error>>;
9}
10
11impl<T, A> SinkExt<T> for A
12where
13    A: Sink<T>,
14{
15    async fn send_and_flush(&mut self, item: T) -> Result<(), Self::Error> {
16        Sink::<T>::send(self, item).await?;
17        Sink::<T>::flush(self).await
18    }
19}