diff options
| author | Tobias Bucher <tobiasbucher5991@gmail.com> | 2022-12-31 01:38:37 +0100 |
|---|---|---|
| committer | Tobias Bucher <tobiasbucher5991@gmail.com> | 2023-06-23 14:54:24 +0200 |
| commit | 9fc2da1b5438728e9f6469db227a7de2b345203e (patch) | |
| tree | 27d421a7e7bd578a44d086dce80b41ea1b162a67 | |
| parent | fe37f37e4b764bb82fc0eb8c727842746de7c93f (diff) | |
| download | rust-9fc2da1b5438728e9f6469db227a7de2b345203e.tar.gz rust-9fc2da1b5438728e9f6469db227a7de2b345203e.zip | |
Forward `io::{Read,Seek,Write}` impls of `File` to `&File`
This reduces code duplication.
| -rw-r--r-- | library/std/src/fs.rs | 53 |
1 files changed, 20 insertions, 33 deletions
diff --git a/library/std/src/fs.rs b/library/std/src/fs.rs index 89dfdfafdb1..f5848bf4cc4 100644 --- a/library/std/src/fs.rs +++ b/library/std/src/fs.rs @@ -743,7 +743,7 @@ fn buffer_capacity_required(mut file: &File) -> Option<usize> { } #[stable(feature = "rust1", since = "1.0.0")] -impl Read for File { +impl Read for &File { fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { self.inner.read(buf) } @@ -776,7 +776,7 @@ impl Read for File { } } #[stable(feature = "rust1", since = "1.0.0")] -impl Write for File { +impl Write for &File { fn write(&mut self, buf: &[u8]) -> io::Result<usize> { self.inner.write(buf) } @@ -795,67 +795,54 @@ impl Write for File { } } #[stable(feature = "rust1", since = "1.0.0")] -impl Seek for File { +impl Seek for &File { fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> { self.inner.seek(pos) } } + #[stable(feature = "rust1", since = "1.0.0")] -impl Read for &File { +impl Read for File { fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { - self.inner.read(buf) + (&*self).read(buf) } - - fn read_buf(&mut self, cursor: BorrowedCursor<'_>) -> io::Result<()> { - self.inner.read_buf(cursor) - } - fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> { - self.inner.read_vectored(bufs) + (&*self).read_vectored(bufs) + } + fn read_buf(&mut self, cursor: BorrowedCursor<'_>) -> io::Result<()> { + (&*self).read_buf(cursor) } - #[inline] fn is_read_vectored(&self) -> bool { - self.inner.is_read_vectored() + (&&*self).is_read_vectored() } - - // Reserves space in the buffer based on the file size when available. fn read_to_end(&mut self, buf: &mut Vec<u8>) -> io::Result<usize> { - let size = buffer_capacity_required(self); - buf.reserve(size.unwrap_or(0)); - io::default_read_to_end(self, buf, size) + (&*self).read_to_end(buf) } - - // Reserves space in the buffer based on the file size when available. fn read_to_string(&mut self, buf: &mut String) -> io::Result<usize> { - let size = buffer_capacity_required(self); - buf.reserve(size.unwrap_or(0)); - io::default_read_to_string(self, buf, size) + (&*self).read_to_string(buf) } } #[stable(feature = "rust1", since = "1.0.0")] -impl Write for &File { +impl Write for File { fn write(&mut self, buf: &[u8]) -> io::Result<usize> { - self.inner.write(buf) + (&*self).write(buf) } - fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> { - self.inner.write_vectored(bufs) + (&*self).write_vectored(bufs) } - #[inline] fn is_write_vectored(&self) -> bool { - self.inner.is_write_vectored() + (&&*self).is_write_vectored() } - fn flush(&mut self) -> io::Result<()> { - self.inner.flush() + (&*self).flush() } } #[stable(feature = "rust1", since = "1.0.0")] -impl Seek for &File { +impl Seek for File { fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> { - self.inner.seek(pos) + (&*self).seek(pos) } } |
