#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum DecodeError {
BufferTooShort {
required: usize,
available: usize,
},
Incomplete,
}
impl DecodeError {
pub const fn check_buffer_size(required: usize, buf: &[u8]) -> Result<(), Self> {
if buf.len() < required {
Err(Self::BufferTooShort {
required,
available: buf.len(),
})
} else {
Ok(())
}
}
}
impl std::fmt::Display for DecodeError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::BufferTooShort {
required,
available,
} => write!(
f,
"buffer too short: required {required} bytes, available {available} bytes"
),
Self::Incomplete => write!(f, "incomplete input"),
}
}
}
impl std::error::Error for DecodeError {}