1
1
use std:: io:: { self , BufRead , Read } ;
2
2
3
- pub struct MyBufReader {
4
- inner : Box < dyn io:: Read > ,
3
+ pub struct MyBufReader < ' a > {
4
+ inner : Box < dyn io:: Read + ' a > ,
5
5
buffer : Vec < u8 > ,
6
6
data : usize ,
7
7
free : usize ,
8
8
}
9
9
10
- impl MyBufReader {
11
- pub fn new ( reader : impl io:: Read + ' static , mut buffer : Vec < u8 > ) -> Self {
10
+ impl < ' a > MyBufReader < ' a > {
11
+ pub fn new ( reader : impl io:: Read + ' a , mut buffer : Vec < u8 > ) -> Self {
12
12
let inner = Box :: new ( reader) ;
13
13
let data = 0 ;
14
14
let free = buffer. len ( ) ;
@@ -22,7 +22,7 @@ impl MyBufReader {
22
22
}
23
23
}
24
24
25
- impl Read for MyBufReader {
25
+ impl < ' a > Read for MyBufReader < ' a > {
26
26
fn read ( & mut self , buf : & mut [ u8 ] ) -> io:: Result < usize > {
27
27
let data = self . fill_buf ( ) ?;
28
28
let n = data. len ( ) . min ( buf. len ( ) ) ;
@@ -32,7 +32,7 @@ impl Read for MyBufReader {
32
32
}
33
33
}
34
34
35
- impl BufRead for MyBufReader {
35
+ impl < ' a > BufRead for MyBufReader < ' a > {
36
36
fn fill_buf ( & mut self ) -> io:: Result < & [ u8 ] > {
37
37
assert_eq ! ( self . buffer. len( ) , self . buffer. capacity( ) ) ;
38
38
if self . data == self . free {
0 commit comments