Skip to content

Commit e708e40

Browse files
committed
move TeeReader to lib
1 parent b19e1b9 commit e708e40

File tree

3 files changed

+36
-32
lines changed

3 files changed

+36
-32
lines changed

Diff for: chapter3/src/3_7/tee_reader.rs

+2-32
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,5 @@
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;
333

344
fn main() -> std::io::Result<()> {
355
// TeeReader を使用した場合の例。

Diff for: lib/src/io.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
mod multi_reader;
22
mod multi_writer;
3+
mod tee_reader;
34

45
pub use multi_reader::MultiReader;
56
pub use multi_writer::MultiWriter;
7+
pub use tee_reader::TeeReader;

Diff for: lib/src/io/tee_reader.rs

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+
}

0 commit comments

Comments
 (0)