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