use crate::base::ModuleState;
use snafu::ResultExt;
use std::io::{Read, Write};
use crate::{error, ReadExt, Result, TryFrom, WithFixedPayloadLength, WriteExt};
impl WithFixedPayloadLength for ModuleState {
const FIXED_PAYLOAD_LENGTH: u16 = u8::FIXED_PAYLOAD_LENGTH;
}
pub(crate) trait ModuleStateWriterExt: Write {
fn write_module_state(&mut self, r: &ModuleState) -> Result<()> {
self.write_u8(r.clone() as u8)
}
}
impl<B: Write + ?Sized> ModuleStateWriterExt for B {}
pub(crate) trait ModuleStateReaderExt: Read {
fn read_module_state(&mut self) -> Result<ModuleState> {
let value = self.read_u8()?;
ModuleState::try_from(value).context(error::Io)
}
}
impl<B: Read + ?Sized> ModuleStateReaderExt for B {}