use core::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum Error {
Truncated,
BadMagic,
Reserved,
WindowTooLarge,
MissingDictionary,
WrongDictionary,
OutputLimit,
Checksum,
ContentSize,
Corrupt(&'static str),
BadDictionary(&'static str),
Parameter(&'static str),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::Truncated => f.write_str("input truncated"),
Error::BadMagic => f.write_str("unknown frame magic"),
Error::Reserved => f.write_str("reserved bit or field set"),
Error::WindowTooLarge => f.write_str("window size exceeds decoder limit"),
Error::MissingDictionary => f.write_str("frame needs a dictionary"),
Error::WrongDictionary => f.write_str("frame dictionary ID does not match"),
Error::OutputLimit => f.write_str("output limit exceeded"),
Error::Checksum => f.write_str("content checksum mismatch"),
Error::ContentSize => f.write_str("content size mismatch"),
Error::Corrupt(why) => write!(f, "corrupt data: {why}"),
Error::BadDictionary(why) => write!(f, "bad dictionary: {why}"),
Error::Parameter(why) => write!(f, "invalid parameter: {why}"),
}
}
}
impl core::error::Error for Error {}
pub type Result<T> = core::result::Result<T, Error>;