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}