#[non_exhaustive]
#[derive(Debug, PartialEq, Eq)]
pub enum Error<E> {
Transport(E),
Parse(ParseError),
Timeout,
InvalidParam(&'static str),
}
impl<E: core::fmt::Display> core::fmt::Display for Error<E> {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
Error::Transport(e) => write!(f, "transport error: {e}"),
Error::Parse(p) => write!(f, "parse error: {p}"),
Error::Timeout => write!(f, "timeout"),
Error::InvalidParam(s) => write!(f, "invalid parameter: {s}"),
}
}
}
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum ParseError {
UnexpectedEof,
InvalidUtf8,
UnknownCommand,
BadChecksum,
}
impl core::fmt::Display for ParseError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
ParseError::UnexpectedEof => write!(f, "unexpected end of input"),
ParseError::InvalidUtf8 => write!(f, "invalid UTF-8 in frame"),
ParseError::UnknownCommand => write!(f, "unknown command letter"),
ParseError::BadChecksum => write!(f, "checksum mismatch"),
}
}
}