From 98f287240ff9518c1ea5519c5cd03dc2ba6d4452 Mon Sep 17 00:00:00 2001 From: Alisdair Owens Date: Fri, 10 Jul 2015 17:34:07 +0100 Subject: Add specializations of read_to_end for Stdin, TcpStream and File, allowing them to read into a buffer containing uninitialized data, rather than pay the cost of zeroing. --- src/libstd/net/tcp.rs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/libstd/net') diff --git a/src/libstd/net/tcp.rs b/src/libstd/net/tcp.rs index 085ba286dc3..66c8403b268 100644 --- a/src/libstd/net/tcp.rs +++ b/src/libstd/net/tcp.rs @@ -19,6 +19,7 @@ use io; use net::{ToSocketAddrs, SocketAddr, Shutdown}; use sys_common::net as net_imp; use sys_common::{AsInner, FromInner}; +use sys_common::io::read_to_end_uninitialized; use time::Duration; /// A structure which represents a TCP stream between a local socket and a @@ -189,6 +190,9 @@ impl TcpStream { #[stable(feature = "rust1", since = "1.0.0")] impl Read for TcpStream { fn read(&mut self, buf: &mut [u8]) -> io::Result { self.0.read(buf) } + fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { + unsafe { read_to_end_uninitialized(self, buf) } + } } #[stable(feature = "rust1", since = "1.0.0")] impl Write for TcpStream { @@ -198,6 +202,9 @@ impl Write for TcpStream { #[stable(feature = "rust1", since = "1.0.0")] impl<'a> Read for &'a TcpStream { fn read(&mut self, buf: &mut [u8]) -> io::Result { self.0.read(buf) } + fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { + unsafe { read_to_end_uninitialized(self, buf) } + } } #[stable(feature = "rust1", since = "1.0.0")] impl<'a> Write for &'a TcpStream { -- cgit 1.4.1-3-g733a5