@@ -14,19 +14,20 @@ use io;
14
14
use vec:: bytes:: MutableByteVector ;
15
15
16
16
/// Wraps a `Reader`, limiting the number of bytes that can be read from it.
17
- pub struct LimitReader < ' a , R > {
17
+ pub struct LimitReader < R > {
18
18
priv limit : uint ,
19
- priv inner : & ' a mut R
19
+ priv inner : R
20
20
}
21
21
22
- impl < ' a , R : Reader > LimitReader < ' a , R > {
22
+ impl < R : Reader > LimitReader < R > {
23
23
/// Creates a new `LimitReader`
24
- pub fn new < ' a > ( r : & ' a mut R , limit : uint ) -> LimitReader < ' a , R > {
24
+ pub fn new ( r : R , limit : uint ) -> LimitReader < R > {
25
25
LimitReader { limit : limit, inner : r }
26
26
}
27
+ pub fn unwrap ( self ) -> R { self . inner }
27
28
}
28
29
29
- impl < ' a , R : Reader > Reader for LimitReader < ' a , R > {
30
+ impl < R : Reader > Reader for LimitReader < R > {
30
31
fn read ( & mut self , buf : & mut [ u8 ] ) -> io:: IoResult < uint > {
31
32
if self . limit == 0 {
32
33
return Err ( io:: standard_error ( io:: EndOfFile ) ) ;
@@ -192,7 +193,7 @@ mod test {
192
193
fn test_bounded_reader_unlimited ( ) {
193
194
let mut r = MemReader :: new ( ~[ 0 , 1 , 2 ] ) ;
194
195
{
195
- let mut r = LimitReader :: new ( & mut r , 4 ) ;
196
+ let mut r = LimitReader :: new ( r . by_ref ( ) , 4 ) ;
196
197
assert_eq ! ( ~[ 0 , 1 , 2 ] , r. read_to_end( ) . unwrap( ) ) ;
197
198
}
198
199
}
@@ -201,7 +202,7 @@ mod test {
201
202
fn test_bound_reader_limited ( ) {
202
203
let mut r = MemReader :: new ( ~[ 0 , 1 , 2 ] ) ;
203
204
{
204
- let mut r = LimitReader :: new ( & mut r , 2 ) ;
205
+ let mut r = LimitReader :: new ( r . by_ref ( ) , 2 ) ;
205
206
assert_eq ! ( ~[ 0 , 1 ] , r. read_to_end( ) . unwrap( ) ) ;
206
207
}
207
208
assert_eq ! ( ~[ 2 ] , r. read_to_end( ) . unwrap( ) ) ;
0 commit comments