use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[non_exhaustive]
pub enum ParseError {
EmptyInput,
NoHeaders,
InvalidRange {
offset: u32,
length: u32,
available: u64,
},
}
impl fmt::Display for ParseError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ParseError::EmptyInput => write!(f, "input is empty"),
ParseError::NoHeaders => write!(f, "input contains no RFC 5322 headers"),
ParseError::InvalidRange {
offset,
length,
available,
} => write!(
f,
"body range [{}..{}] extends beyond message length {}",
offset,
u64::from(*offset) + u64::from(*length),
available,
),
}
}
}
impl std::error::Error for ParseError {}