diff options
author | Neal H. Walfield <neal@pep.foundation> | 2018-02-23 12:17:24 +0100 |
---|---|---|
committer | Neal H. Walfield <neal@pep.foundation> | 2018-02-23 12:48:27 +0100 |
commit | afbe6667f98dd9396c102e9c5b033681c2dcf6b2 (patch) | |
tree | 2ab483cf342b51f23511ac93b32a18237f24351a /buffered-reader/src/decompress.rs | |
parent | ec8c7984f72debd3bca2a5e76b5c8292c81772f2 (diff) |
buffered-reader: Add methods to get a reference to the inner reader.
- To be able to walk a stack of buffered readers without consuming
them, add the get_mut and get_ref methods to the `BufferedReader`
trait.
Diffstat (limited to 'buffered-reader/src/decompress.rs')
-rw-r--r-- | buffered-reader/src/decompress.rs | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/buffered-reader/src/decompress.rs b/buffered-reader/src/decompress.rs index 0bad2e48..81a11e48 100644 --- a/buffered-reader/src/decompress.rs +++ b/buffered-reader/src/decompress.rs @@ -88,10 +88,18 @@ impl<R: BufferedReader<C>, C> BufferedReader<C> return self.reader.steal_eof(); } + fn get_mut(&mut self) -> Option<&mut BufferedReader<C>> { + Some(self.reader.reader.get_mut()) + } + + fn get_ref(&self) -> Option<&BufferedReader<C>> { + Some(self.reader.reader.get_ref()) + } + fn into_inner<'b>(self: Box<Self>) -> Option<Box<BufferedReader<C> + 'b>> where Self: 'b { // Strip the outer box. - Some(Box::new((*self).reader.reader.into_inner())) + Some(Box::new(self.reader.reader.into_inner())) } fn cookie_set(&mut self, cookie: C) -> C { @@ -188,10 +196,18 @@ impl<R: BufferedReader<C>, C> BufferedReader<C> return self.reader.steal_eof(); } + fn get_mut(&mut self) -> Option<&mut BufferedReader<C>> { + Some(self.reader.reader.get_mut()) + } + + fn get_ref(&self) -> Option<&BufferedReader<C>> { + Some(self.reader.reader.get_ref()) + } + fn into_inner<'b>(self: Box<Self>) -> Option<Box<BufferedReader<C> + 'b>> where Self: 'b { // Strip the outer box. - Some(Box::new((*self).reader.reader.into_inner())) + Some(Box::new(self.reader.reader.into_inner())) } fn cookie_set(&mut self, cookie: C) -> C { @@ -287,10 +303,18 @@ impl<R: BufferedReader<C>, C> BufferedReader<C> for BufferedReaderBzip<R, C> { return self.reader.steal_eof(); } + fn get_mut(&mut self) -> Option<&mut BufferedReader<C>> { + Some(self.reader.reader.get_mut()) + } + + fn get_ref(&self) -> Option<&BufferedReader<C>> { + Some(self.reader.reader.get_ref()) + } + fn into_inner<'b>(self: Box<Self>) -> Option<Box<BufferedReader<C> + 'b>> where Self: 'b { // Strip the outer box. - Some(Box::new((*self).reader.reader.into_inner())) + Some(Box::new(self.reader.reader.into_inner())) } fn cookie_set(&mut self, cookie: C) -> C { |