1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
use std::cell::RefCell; use std::io::{self, Write}; use std::rc::Rc; pub struct RcWriter<W: Write> { inner: Rc<RefCell<W>>, } impl<W: Write> RcWriter<W> { #[inline] pub fn new(writer: Rc<RefCell<W>>) -> RcWriter<W> { RcWriter { inner: writer, } } } impl<W: Write> Write for RcWriter<W> { #[inline] fn write(&mut self, buf: &[u8]) -> Result<usize, io::Error> { self.inner.borrow_mut().write(buf) } #[inline] fn flush(&mut self) -> Result<(), io::Error> { self.inner.borrow_mut().flush() } }