about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTobias Bucher <tobiasbucher5991@gmail.com>2022-12-31 01:38:37 +0100
committerTobias Bucher <tobiasbucher5991@gmail.com>2023-06-23 14:54:24 +0200
commit9fc2da1b5438728e9f6469db227a7de2b345203e (patch)
tree27d421a7e7bd578a44d086dce80b41ea1b162a67
parentfe37f37e4b764bb82fc0eb8c727842746de7c93f (diff)
downloadrust-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.rs53
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)
     }
 }