use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum CompressionError {
#[error("compression feature `{0}` not enabled at compile time")]
FeatureDisabled(&'static str),
#[error("invalid compressed data: {0}")]
InvalidData(String),
#[error("decompressed output exceeds limit of {limit} bytes")]
TooLarge { limit: usize },
#[error("invalid {codec} compression level {level}: {reason}")]
InvalidLevel {
codec: &'static str,
level: i32,
reason: String,
},
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn feature_disabled_display() {
let e = CompressionError::FeatureDisabled("snappy");
assert2::assert!(
e.to_string() == "compression feature `snappy` not enabled at compile time"
);
}
}