]> git.lizzy.rs Git - rust.git/commitdiff
rollup merge of #19328: sfackler/buffered-get-mut
authorAlex Crichton <alex@alexcrichton.com>
Wed, 26 Nov 2014 17:47:10 +0000 (09:47 -0800)
committerAlex Crichton <alex@alexcrichton.com>
Thu, 27 Nov 2014 00:50:13 +0000 (16:50 -0800)
This is necessary to e.g. set a timeout on the underlying stream.

r? @alexcrichton

1  2 
src/libstd/io/buffered.rs

index 025033a112c0cb51ed81181af6a20d89e53d2345,6c704d2f23dcec9b868e368ec1c7ec37274e6d22..e92bad592d1268cc20309b1a18750058f343db87
@@@ -14,7 -14,7 +14,7 @@@
  
  use cmp;
  use io::{Reader, Writer, Stream, Buffer, DEFAULT_BUF_SIZE, IoResult};
 -use iter::ExactSize;
 +use iter::ExactSizeIterator;
  use ops::Drop;
  use option::{Some, None, Option};
  use result::{Ok, Err};
@@@ -75,10 -75,14 +75,14 @@@ impl<R: Reader> BufferedReader<R> 
      }
  
      /// Gets a reference to the underlying reader.
+     pub fn get_ref<'a>(&self) -> &R { &self.inner }
+     /// Gets a mutable reference to the underlying reader.
      ///
-     /// This type does not expose the ability to get a mutable reference to the
-     /// underlying reader because that could possibly corrupt the buffer.
-     pub fn get_ref<'a>(&'a self) -> &'a R { &self.inner }
+     /// ## Warning
+     ///
+     /// It is inadvisable to directly read from the underlying reader.
+     pub fn get_mut(&mut self) -> &mut R { &mut self.inner }
  
      /// Unwraps this `BufferedReader`, returning the underlying reader.
      ///
@@@ -176,10 -180,14 +180,14 @@@ impl<W: Writer> BufferedWriter<W> 
      }
  
      /// Gets a reference to the underlying writer.
+     pub fn get_ref(&self) -> &W { self.inner.as_ref().unwrap() }
+     /// Gets a mutable reference to the underlying write.
      ///
-     /// This type does not expose the ability to get a mutable reference to the
-     /// underlying reader because that could possibly corrupt the buffer.
-     pub fn get_ref<'a>(&'a self) -> &'a W { self.inner.as_ref().unwrap() }
+     /// ## Warning
+     ///
+     /// It is inadvisable to directly read from the underlying writer.
+     pub fn get_mut(&mut self) -> &mut W { self.inner.as_mut().unwrap() }
  
      /// Unwraps this `BufferedWriter`, returning the underlying writer.
      ///
@@@ -341,14 -349,22 +349,22 @@@ impl<S: Stream> BufferedStream<S> 
      }
  
      /// Gets a reference to the underlying stream.
-     ///
-     /// This type does not expose the ability to get a mutable reference to the
-     /// underlying reader because that could possibly corrupt the buffer.
-     pub fn get_ref<'a>(&'a self) -> &'a S {
+     pub fn get_ref(&self) -> &S {
          let InternalBufferedWriter(ref w) = self.inner.inner;
          w.get_ref()
      }
  
+     /// Gets a mutable reference to the underlying stream.
+     ///
+     /// ## Warning
+     ///
+     /// It is inadvisable to read directly from or write directly to the
+     /// underlying stream.
+     pub fn get_mut(&mut self) -> &mut S {
+         let InternalBufferedWriter(ref mut w) = self.inner.inner;
+         w.get_mut()
+     }
      /// Unwraps this `BufferedStream`, returning the underlying stream.
      ///
      /// The internal buffer is flushed before returning the stream. Any leftover