diff options
| author | Florian Hartwig <florian.j.hartwig@gmail.com> | 2017-10-07 14:49:42 +0200 |
|---|---|---|
| committer | Florian Hartwig <florian.j.hartwig@gmail.com> | 2017-10-07 22:19:51 +0200 |
| commit | d52acbe37f69a2ebc9d161c479ed628da1cbea4e (patch) | |
| tree | 5dbb5d11f611f09996dc5aea8294247f7d63ebc8 /src/libstd/io/impls.rs | |
| parent | b67f4283b3d04ef8e0504503123001cf642ec325 (diff) | |
| download | rust-d52acbe37f69a2ebc9d161c479ed628da1cbea4e.tar.gz rust-d52acbe37f69a2ebc9d161c479ed628da1cbea4e.zip | |
Add read_to_end implementation to &[u8]'s Read impl
The default impl for read_to_end does a bunch of bookkeeping that isn't necessary for slices and is about 4 times slower on my machine.
Diffstat (limited to 'src/libstd/io/impls.rs')
| -rw-r--r-- | src/libstd/io/impls.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libstd/io/impls.rs b/src/libstd/io/impls.rs index d6b41ceda43..fe1179a3b4a 100644 --- a/src/libstd/io/impls.rs +++ b/src/libstd/io/impls.rs @@ -206,6 +206,14 @@ impl<'a> Read for &'a [u8] { *self = b; Ok(()) } + + #[inline] + fn read_to_end(&mut self, buf: &mut Vec<u8>) -> io::Result<usize> { + buf.extend_from_slice(*self); + let len = self.len(); + *self = &self[len..]; + Ok(len) + } } #[stable(feature = "rust1", since = "1.0.0")] |
