1use std::io::{stdin, stdout, Read as StdRead, Stdin, Stdout, Write as StdWrite};
6
7pub trait ReadWrite: zmodem2::Read + zmodem2::Write + StdRead + StdWrite {}
8
9impl<T: zmodem2::Read + zmodem2::Write + StdRead + StdWrite> ReadWrite for T {}
10
11pub struct CombinedStdInOut {
12 stdin: Stdin,
13 stdout: Stdout,
14}
15
16impl Default for CombinedStdInOut {
17 fn default() -> Self {
18 Self::new()
19 }
20}
21
22impl CombinedStdInOut {
23 pub fn new() -> CombinedStdInOut {
24 CombinedStdInOut {
25 stdin: stdin(),
26 stdout: stdout(),
27 }
28 }
29}
30
31impl StdRead for CombinedStdInOut {
32 fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
33 self.stdin.read(buf)
34 }
35}
36
37impl StdWrite for CombinedStdInOut {
38 fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
39 self.stdout.write(buf)
40 }
41
42 fn flush(&mut self) -> std::io::Result<()> {
43 self.stdout.flush()
44 }
45}