File tree 3 files changed +36
-32
lines changed
3 files changed +36
-32
lines changed Original file line number Diff line number Diff line change 1
- use std:: io:: { Read , Write } ;
2
-
3
- struct TeeReader < R , W >
4
- where
5
- R : Read ,
6
- W : Write ,
7
- {
8
- reader : R ,
9
- writer : W ,
10
- }
11
-
12
- impl < R , W > TeeReader < R , W >
13
- where
14
- R : Read ,
15
- W : Write ,
16
- {
17
- fn new ( reader : R , writer : W ) -> Self {
18
- Self { reader, writer }
19
- }
20
- }
21
-
22
- impl < R , W > Read for TeeReader < R , W >
23
- where
24
- R : Read ,
25
- W : Write ,
26
- {
27
- fn read ( & mut self , buf : & mut [ u8 ] ) -> std:: io:: Result < usize > {
28
- let n = self . reader . read ( buf) ?;
29
- self . writer . write_all ( & buf[ ..n] ) ?;
30
- Ok ( n)
31
- }
32
- }
1
+ use lib:: io:: TeeReader ;
2
+ use std:: io:: Read ;
33
3
34
4
fn main ( ) -> std:: io:: Result < ( ) > {
35
5
// TeeReader を使用した場合の例。
Original file line number Diff line number Diff line change 1
1
mod multi_reader;
2
2
mod multi_writer;
3
+ mod tee_reader;
3
4
4
5
pub use multi_reader:: MultiReader ;
5
6
pub use multi_writer:: MultiWriter ;
7
+ pub use tee_reader:: TeeReader ;
Original file line number Diff line number Diff line change
1
+ use std:: io:: { Read , Write } ;
2
+
3
+ pub struct TeeReader < R , W >
4
+ where
5
+ R : Read ,
6
+ W : Write ,
7
+ {
8
+ reader : R ,
9
+ writer : W ,
10
+ }
11
+
12
+ impl < R , W > TeeReader < R , W >
13
+ where
14
+ R : Read ,
15
+ W : Write ,
16
+ {
17
+ pub fn new ( reader : R , writer : W ) -> Self {
18
+ Self { reader, writer }
19
+ }
20
+ }
21
+
22
+ impl < R , W > Read for TeeReader < R , W >
23
+ where
24
+ R : Read ,
25
+ W : Write ,
26
+ {
27
+ fn read ( & mut self , buf : & mut [ u8 ] ) -> std:: io:: Result < usize > {
28
+ let n = self . reader . read ( buf) ?;
29
+ self . writer . write_all ( & buf[ ..n] ) ?;
30
+ Ok ( n)
31
+ }
32
+ }
You can’t perform that action at this time.
0 commit comments