use std::fmt;
#[derive(Clone, Eq, PartialEq)]
pub enum StreamIo {
Read(Result<StreamOutput, Vec<u8>>),
Write(Result<StreamOutput, Vec<u8>>),
}
impl fmt::Debug for StreamIo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Read(Ok(_)) => f.write_str("read output"),
Self::Read(Err(_)) => f.write_str("read input"),
Self::Write(Ok(_)) => f.write_str("write output"),
Self::Write(Err(_)) => f.write_str("write input"),
}
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct StreamOutput {
pub buffer: Vec<u8>,
pub bytes_count: usize,
}
impl StreamOutput {
pub fn bytes(&self) -> &[u8] {
&self.buffer[..self.bytes_count]
}
}