//! Module providing a helper structure to capture output in subprocesses. use std::{ io, io::prelude::Write, sync::{Arc, Mutex}, }; pub struct Sink(Arc>>); impl Sink { pub fn new_boxed(data: &Arc>>) -> Box { Box::new(Self(data.clone())) } } impl Write for Sink { fn write(&mut self, data: &[u8]) -> io::Result { Write::write(&mut *self.0.lock().unwrap(), data) } fn flush(&mut self) -> io::Result<()> { Ok(()) } }