1 use std::io; 2 3 use bytes::BufMut; 4 5 /// An `io::Write`r that only requires mutable reference and assumes that there is space available 6 /// in the buffer for every write operation or that it can be extended implicitly (like 7 /// `bytes::BytesMut`, for example). 8 /// 9 /// This is slightly faster (~10%) than `bytes::buf::Writer` in such cases because it does not 10 /// perform a remaining length check before writing. 11 pub(crate) struct MutWriter<'a, B>(pub(crate) &'a mut B); 12 13 impl<'a, B> io::Write for MutWriter<'a, B> 14 where 15 B: BufMut, 16 { write(&mut self, buf: &[u8]) -> io::Result<usize>17 fn write(&mut self, buf: &[u8]) -> io::Result<usize> { 18 self.0.put_slice(buf); 19 Ok(buf.len()) 20 } 21 flush(&mut self) -> io::Result<()>22 fn flush(&mut self) -> io::Result<()> { 23 Ok(()) 24 } 25 } 26