diff --git a/io/src/lib.rs b/io/src/lib.rs index 6dfed9a12..c7cacadf1 100644 --- a/io/src/lib.rs +++ b/io/src/lib.rs @@ -153,6 +153,30 @@ impl<'a, R: BufRead + ?Sized> BufRead for Take<'a, R> { } } +impl Read for &'_ mut T { + #[inline] + fn read(&mut self, buf: &mut [u8]) -> Result { + (**self).read(buf) + } + + #[inline] + fn read_exact(&mut self, buf: &mut [u8]) -> Result<()> { + (**self).read_exact(buf) + } +} + +impl BufRead for &'_ mut T { + #[inline] + fn fill_buf(&mut self) -> Result<&[u8]> { + (**self).fill_buf() + } + + #[inline] + fn consume(&mut self, amount: usize) { + (**self).consume(amount) + } +} + impl Read for &[u8] { #[inline] fn read(&mut self, buf: &mut [u8]) -> Result { @@ -259,6 +283,23 @@ pub trait Write { } } +impl Write for &'_ mut T { + #[inline] + fn write(&mut self, buf: &[u8]) -> Result { + (**self).write(buf) + } + + #[inline] + fn write_all(&mut self, buf: &[u8]) -> Result<()> { + (**self).write_all(buf) + } + + #[inline] + fn flush(&mut self) -> Result<()> { + (**self).flush() + } +} + #[cfg(feature = "alloc")] impl Write for alloc::vec::Vec { #[inline]