1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
//! Module providing a helper structure to capture output in subprocesses. use std::{ io, io::prelude::Write, sync::{Arc, Mutex}, }; pub struct Sink(Arc<Mutex<Vec<u8>>>); impl Sink { pub fn new_boxed(data: &Arc<Mutex<Vec<u8>>>) -> Box<Self> { Box::new(Self(data.clone())) } } impl Write for Sink { fn write(&mut self, data: &[u8]) -> io::Result<usize> { Write::write(&mut *self.0.lock().unwrap(), data) } fn flush(&mut self) -> io::Result<()> { Ok(()) } }