1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use crate::output::WriteResult;
pub trait OutputStream {
fn write(&mut self, buffer: &[u8]) -> WriteResult {
let mut rem: &[u8] = buffer;
let mut count: usize = 0;
while rem.len() != 0 {
match self.some(rem) {
WriteResult::Written(c) => {
count += c;
rem = &rem[c..];
},
WriteResult::Timeout(c) =>
return WriteResult::Timeout(count + c),
WriteResult::Failure(c, e) =>
return WriteResult::Failure(count + c, e),
}
}
WriteResult::Written(count)
}
fn some(&mut self, buffer: &[u8]) -> WriteResult;
}