diff options
| author | Palmer Cox <p@lmercox.com> | 2014-02-13 23:28:11 -0500 |
|---|---|---|
| committer | Palmer Cox <p@lmercox.com> | 2014-02-15 00:58:44 -0500 |
| commit | 4c233d1c73edae4fb2609100528d3c952723453f (patch) | |
| tree | 22f1574bb53ffe9aa2b40f03017a48dc2892fe70 | |
| parent | d4dd4c68f82baf4d307012da1b4d6b91d26fb12f (diff) | |
| download | rust-4c233d1c73edae4fb2609100528d3c952723453f.tar.gz rust-4c233d1c73edae4fb2609100528d3c952723453f.zip | |
Update LimitReader to take the Reader to wrap by value
| -rw-r--r-- | src/libstd/io/util.rs | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/libstd/io/util.rs b/src/libstd/io/util.rs index c4d92b36ecf..2e12fc0b9f2 100644 --- a/src/libstd/io/util.rs +++ b/src/libstd/io/util.rs @@ -14,19 +14,20 @@ use io; use vec::bytes::MutableByteVector; /// Wraps a `Reader`, limiting the number of bytes that can be read from it. -pub struct LimitReader<'a, R> { +pub struct LimitReader<R> { priv limit: uint, - priv inner: &'a mut R + priv inner: R } -impl<'a, R: Reader> LimitReader<'a, R> { +impl<R: Reader> LimitReader<R> { /// Creates a new `LimitReader` - pub fn new<'a>(r: &'a mut R, limit: uint) -> LimitReader<'a, R> { + pub fn new(r: R, limit: uint) -> LimitReader<R> { LimitReader { limit: limit, inner: r } } + pub fn unwrap(self) -> R { self.inner } } -impl<'a, R: Reader> Reader for LimitReader<'a, R> { +impl<R: Reader> Reader for LimitReader<R> { fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> { if self.limit == 0 { return Err(io::standard_error(io::EndOfFile)); @@ -192,7 +193,7 @@ mod test { fn test_bounded_reader_unlimited() { let mut r = MemReader::new(~[0, 1, 2]); { - let mut r = LimitReader::new(&mut r, 4); + let mut r = LimitReader::new(r.by_ref(), 4); assert_eq!(~[0, 1, 2], r.read_to_end().unwrap()); } } @@ -201,7 +202,7 @@ mod test { fn test_bound_reader_limited() { let mut r = MemReader::new(~[0, 1, 2]); { - let mut r = LimitReader::new(&mut r, 2); + let mut r = LimitReader::new(r.by_ref(), 2); assert_eq!(~[0, 1], r.read_to_end().unwrap()); } assert_eq!(~[2], r.read_to_end().unwrap()); |
