summaryrefslogtreecommitdiffstats
path: root/buffered-reader/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'buffered-reader/src/lib.rs')
-rw-r--r--buffered-reader/src/lib.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/buffered-reader/src/lib.rs b/buffered-reader/src/lib.rs
index 4738ed2c..82cab946 100644
--- a/buffered-reader/src/lib.rs
+++ b/buffered-reader/src/lib.rs
@@ -172,6 +172,17 @@ pub trait BufferedReader<C> : io::Read + fmt::Debug {
fn into_inner<'a>(self: Box<Self>) -> Option<Box<BufferedReader<C> + 'a>>
where Self: 'a;
+ /// Returns a mutable reference to the inner `BufferedReader`, if
+ /// any.
+ ///
+ /// It is a very bad idea to read any data from the inner
+ /// `BufferedReader`, but it can sometimes be useful to get the
+ /// cookie.
+ fn get_mut(&mut self) -> Option<&mut BufferedReader<C>>;
+
+ /// Returns a reference to the inner `BufferedReader`.
+ fn get_ref(&self) -> Option<&BufferedReader<C>>;
+
/// Sets the `BufferedReader`'s cookie and returns the old value.
fn cookie_set(&mut self, cookie: C) -> C;
@@ -264,6 +275,16 @@ impl <'a, C> BufferedReader<C> for Box<BufferedReader<C> + 'a> {
return self.as_mut().drop_eof();
}
+ fn get_mut(&mut self) -> Option<&mut BufferedReader<C>> {
+ // Strip the outer box.
+ self.as_mut().get_mut()
+ }
+
+ fn get_ref(&self) -> Option<&BufferedReader<C>> {
+ // Strip the outer box.
+ self.as_ref().get_ref()
+ }
+
fn into_inner<'b>(self: Box<Self>) -> Option<Box<BufferedReader<C> + 'b>>
where Self: 'b {
// Strip the outer box.