use core::fmt;
use crate::binary::read::ReadEof;
#[derive(Clone, Eq, PartialEq, Debug)]
pub enum ParseError {
BadEof,
BadValue,
BadVersion,
BadOffset,
BadIndex,
Overflow,
CrcMismatch,
}
impl From<ReadEof> for ParseError {
fn from(_error: ReadEof) -> Self {
ParseError::BadEof
}
}
impl From<core::num::TryFromIntError> for ParseError {
fn from(_error: core::num::TryFromIntError) -> Self {
ParseError::BadValue
}
}
impl fmt::Display for ParseError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ParseError::BadEof => write!(f, "end of data reached unexpectedly"),
ParseError::BadValue => write!(f, "invalid value"),
ParseError::BadVersion => write!(f, "unexpected data version"),
ParseError::BadOffset => write!(f, "invalid data offset"),
ParseError::BadIndex => write!(f, "invalid data index"),
ParseError::Overflow => write!(f, "a value overflowed its range"),
ParseError::CrcMismatch => write!(f, "CRC mismatch"),
}
}
}
#[cfg(not(feature = "no_std"))]
impl std::error::Error for ParseError {}