From ecbb896b9eb2acadefde57be493e4298c1aa04a3 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sun, 14 May 2017 21:29:18 -0400 Subject: 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. --- src/libstd/io/impls.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/libstd/io/impls.rs') 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; @@ -23,6 +23,11 @@ impl<'a, R: Read + ?Sized> Read for &'a mut R { (**self).read(buf) } + #[inline] + unsafe fn initializer(&self) -> Initializer { + (**self).initializer() + } + #[inline] fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { (**self).read_to_end(buf) @@ -87,6 +92,11 @@ impl Read for Box { (**self).read(buf) } + #[inline] + unsafe fn initializer(&self) -> Initializer { + (**self).initializer() + } + #[inline] fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { (**self).read_to_end(buf) @@ -171,6 +181,11 @@ impl<'a> Read for &'a [u8] { Ok(amt) } + #[inline] + unsafe fn initializer(&self) -> Initializer { + Initializer::nop() + } + #[inline] fn read_exact(&mut self, buf: &mut [u8]) -> io::Result<()> { if buf.len() > self.len() { -- cgit 1.4.1-3-g733a5