1use crate::{Error, MutBits};
6
7pub struct Tee<O1: MutBits, O2: MutBits> {
10 output1: O1,
11 output2: O2,
12}
13impl<O1: MutBits, O2: MutBits> Tee<O1, O2> {
14 pub fn new(output1: O1, output2: O2) -> Self {
15 Self { output1, output2 }
16 }
17}
18impl<O1: MutBits, O2: MutBits> Drop for Tee<O1, O2> {
19 fn drop(&mut self) {
20 let _ = self.output1.flush();
21 let _ = self.output2.flush();
22 }
23}
24impl<O1: MutBits, O2: MutBits> MutBits for Tee<O1, O2> {
25 fn write_u8(&mut self, val: u8) -> Result<(), Error> {
26 let r1 = self.output1.write_u8(val);
27 let r2 = self.output2.write_u8(val);
28 r1?;
29 r2
30 }
31}