about summary refs log tree commit diff
path: root/src/libstd/io/impls.rs
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2017-05-14 21:29:18 -0400
committerSteven Fackler <sfackler@gmail.com>2017-06-20 20:26:22 -0700
commitecbb896b9eb2acadefde57be493e4298c1aa04a3 (patch)
treef46da3b3294c60abfb2343638c79f51124ac95c0 /src/libstd/io/impls.rs
parent445077963c55297ef1e196a3525723090fe80b22 (diff)
downloadrust-ecbb896b9eb2acadefde57be493e4298c1aa04a3.tar.gz
rust-ecbb896b9eb2acadefde57be493e4298c1aa04a3.zip
Add `Read::initializer`.
This is an API that allows types to indicate that they can be passed
buffers of uninitialized memory which can improve performance.
Diffstat (limited to 'src/libstd/io/impls.rs')
-rw-r--r--src/libstd/io/impls.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/libstd/io/impls.rs b/src/libstd/io/impls.rs
index f691289811b..d6b41ceda43 100644
--- a/src/libstd/io/impls.rs
+++ b/src/libstd/io/impls.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use cmp;
-use io::{self, SeekFrom, Read, Write, Seek, BufRead, Error, ErrorKind};
+use io::{self, SeekFrom, Read, Initializer, Write, Seek, BufRead, Error, ErrorKind};
 use fmt;
 use mem;
 
@@ -24,6 +24,11 @@ impl<'a, R: Read + ?Sized> Read for &'a mut R {
     }
 
     #[inline]
+    unsafe fn initializer(&self) -> Initializer {
+        (**self).initializer()
+    }
+
+    #[inline]
     fn read_to_end(&mut self, buf: &mut Vec<u8>) -> io::Result<usize> {
         (**self).read_to_end(buf)
     }
@@ -88,6 +93,11 @@ impl<R: Read + ?Sized> Read for Box<R> {
     }
 
     #[inline]
+    unsafe fn initializer(&self) -> Initializer {
+        (**self).initializer()
+    }
+
+    #[inline]
     fn read_to_end(&mut self, buf: &mut Vec<u8>) -> io::Result<usize> {
         (**self).read_to_end(buf)
     }
@@ -172,6 +182,11 @@ impl<'a> Read for &'a [u8] {
     }
 
     #[inline]
+    unsafe fn initializer(&self) -> Initializer {
+        Initializer::nop()
+    }
+
+    #[inline]
     fn read_exact(&mut self, buf: &mut [u8]) -> io::Result<()> {
         if buf.len() > self.len() {
             return Err(Error::new(ErrorKind::UnexpectedEof,