use sink::Sink;
use executor;
#[must_use = "sinks do nothing unless used"]
#[derive(Debug)]
pub struct Wait<S> {
sink: executor::Spawn<S>,
}
pub fn new<S: Sink>(s: S) -> Wait<S> {
Wait {
sink: executor::spawn(s),
}
}
impl<S: Sink> Wait<S> {
pub fn send(&mut self, value: S::SinkItem) -> Result<(), S::SinkError> {
self.sink.wait_send(value)
}
pub fn flush(&mut self) -> Result<(), S::SinkError> {
self.sink.wait_flush()
}
pub fn close(&mut self) -> Result<(), S::SinkError> {
self.sink.wait_close()
}
}