1use core::fmt;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
6#[non_exhaustive]
7pub enum Error {
8 Truncated,
10 BadMagic,
12 Reserved,
14 WindowTooLarge,
16 MissingDictionary,
18 WrongDictionary,
20 OutputLimit,
22 Checksum,
24 ContentSize,
26 Corrupt(&'static str),
28 BadDictionary(&'static str),
30 Parameter(&'static str),
32}
33
34impl fmt::Display for Error {
35 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
36 match self {
37 Error::Truncated => f.write_str("input truncated"),
38 Error::BadMagic => f.write_str("unknown frame magic"),
39 Error::Reserved => f.write_str("reserved bit or field set"),
40 Error::WindowTooLarge => f.write_str("window size exceeds decoder limit"),
41 Error::MissingDictionary => f.write_str("frame needs a dictionary"),
42 Error::WrongDictionary => f.write_str("frame dictionary ID does not match"),
43 Error::OutputLimit => f.write_str("output limit exceeded"),
44 Error::Checksum => f.write_str("content checksum mismatch"),
45 Error::ContentSize => f.write_str("content size mismatch"),
46 Error::Corrupt(why) => write!(f, "corrupt data: {why}"),
47 Error::BadDictionary(why) => write!(f, "bad dictionary: {why}"),
48 Error::Parameter(why) => write!(f, "invalid parameter: {why}"),
49 }
50 }
51}
52
53impl core::error::Error for Error {}
54
55pub type Result<T> = core::result::Result<T, Error>;