use super::Compression;
#[derive(Debug, thiserror::Error)]
#[error("compression failed for codec {codec:?}")]
#[non_exhaustive]
pub struct CompressionError {
pub codec: Compression,
#[source]
pub kind: CompressionErrorKind,
}
impl CompressionError {
#[must_use]
pub const fn new(codec: Compression, kind: CompressionErrorKind) -> Self {
Self { codec, kind }
}
}
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum CompressionErrorKind {
#[error("unknown compression type: {0}")]
UnknownCodec(i16),
#[error("codec not enabled; rebuild with the corresponding feature")]
CodecDisabled,
#[error("encode failed: {message}")]
EncodeFailed {
message: String,
},
#[error("decode failed: {message}")]
DecodeFailed {
message: String,
},
#[error("decompressed size exceeds the {limit}-byte limit")]
DecompressedTooLarge {
limit: usize,
},
}