about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorUlrik Sverdrup <bluss@users.noreply.github.com>2015-07-11 22:38:41 +0200
committerUlrik Sverdrup <bluss@users.noreply.github.com>2015-07-14 11:43:24 +0200
commit7b51c1c5730feaacffbd094ed0ee732df29eafdf (patch)
treeeeb99331a889c186bff78dd66f64e6d70c817b13 /src/libstd
parent1b28ffa5216c845d1cef6b0cb3e5ac7db12025d0 (diff)
downloadrust-7b51c1c5730feaacffbd094ed0ee732df29eafdf.tar.gz
rust-7b51c1c5730feaacffbd094ed0ee732df29eafdf.zip
Use Vec::drain in BufWriter
I happened past a comment that asked for functionality that we now have.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/io/buffered.rs9
-rw-r--r--src/libstd/lib.rs1
2 files changed, 2 insertions, 8 deletions
diff --git a/src/libstd/io/buffered.rs b/src/libstd/io/buffered.rs
index 44541b78754..d6561ebb489 100644
--- a/src/libstd/io/buffered.rs
+++ b/src/libstd/io/buffered.rs
@@ -18,7 +18,6 @@ use cmp;
 use error;
 use fmt;
 use io::{self, DEFAULT_BUF_SIZE, Error, ErrorKind, SeekFrom};
-use ptr;
 
 /// The `BufReader` struct adds buffering to any reader.
 ///
@@ -308,14 +307,8 @@ impl<W: Write> BufWriter<W> {
             }
         }
         if written > 0 {
-            // NB: would be better expressed as .remove(0..n) if it existed
-            unsafe {
-                ptr::copy(self.buf.as_ptr().offset(written as isize),
-                          self.buf.as_mut_ptr(),
-                          len - written);
-            }
+            self.buf.drain(..written);
         }
-        self.buf.truncate(len - written);
         ret
     }
 
diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs
index 1e82a03f286..53423cd5148 100644
--- a/src/libstd/lib.rs
+++ b/src/libstd/lib.rs
@@ -119,6 +119,7 @@
 #![feature(core_intrinsics)]
 #![feature(core_prelude)]
 #![feature(core_simd)]
+#![feature(drain)]
 #![feature(fnbox)]
 #![feature(heap_api)]
 #![feature(int_error_internals)]