File tree Expand file tree Collapse file tree 3 files changed +32
-27
lines changed Expand file tree Collapse file tree 3 files changed +32
-27
lines changed Original file line number Diff line number Diff line change @@ -5,33 +5,7 @@ use std::{
5
5
usize,
6
6
} ;
7
7
8
- struct MultiReader < R > {
9
- readers : Vec < R > ,
10
- pos : usize ,
11
- }
12
-
13
- impl < R : Read > MultiReader < R > {
14
- fn new ( readers : Vec < R > ) -> Self {
15
- Self { readers, pos : 0 }
16
- }
17
- }
18
-
19
- impl < R : Read > Read for MultiReader < R > {
20
- fn read ( & mut self , buf : & mut [ u8 ] ) -> std:: io:: Result < usize > {
21
- loop {
22
- match self . readers . get_mut ( self . pos ) {
23
- Some ( r) => {
24
- let n = r. read ( buf) ?;
25
- if n > 0 {
26
- return Ok ( n) ;
27
- }
28
- }
29
- None => return Ok ( 0 ) ,
30
- }
31
- self . pos = self . pos + 1 ;
32
- }
33
- }
34
- }
8
+ use lib:: io:: MultiReader ;
35
9
36
10
struct TeeReader < R , W >
37
11
where
Original file line number Diff line number Diff line change
1
+ mod multi_reader;
1
2
mod multi_writer;
2
3
4
+ pub use multi_reader:: MultiReader ;
3
5
pub use multi_writer:: MultiWriter ;
Original file line number Diff line number Diff line change
1
+ use std:: io:: Read ;
2
+
3
+ pub struct MultiReader < R > {
4
+ readers : Vec < R > ,
5
+ pos : usize ,
6
+ }
7
+
8
+ impl < R : Read > MultiReader < R > {
9
+ pub fn new ( readers : Vec < R > ) -> Self {
10
+ Self { readers, pos : 0 }
11
+ }
12
+ }
13
+
14
+ impl < R : Read > Read for MultiReader < R > {
15
+ fn read ( & mut self , buf : & mut [ u8 ] ) -> std:: io:: Result < usize > {
16
+ loop {
17
+ match self . readers . get_mut ( self . pos ) {
18
+ Some ( r) => {
19
+ let n = r. read ( buf) ?;
20
+ if n > 0 {
21
+ return Ok ( n) ;
22
+ }
23
+ }
24
+ None => return Ok ( 0 ) ,
25
+ }
26
+ self . pos = self . pos + 1 ;
27
+ }
28
+ }
29
+ }
You can’t perform that action at this time.
0 commit comments