use super::CompressAlgorithm;
#[derive(Debug, thiserror::Error)]
pub enum CompressError {
#[error(transparent)]
#[cfg(feature = "lz4")]
#[cfg_attr(docsrs, doc(cfg(feature = "lz4")))]
Lz4(#[from] lz4_flex::block::CompressError),
#[error(transparent)]
#[cfg(feature = "brotli")]
#[cfg_attr(docsrs, doc(cfg(feature = "brotli")))]
Brotli(std::io::Error),
#[error(transparent)]
#[cfg(feature = "snappy")]
#[cfg_attr(docsrs, doc(cfg(feature = "snappy")))]
Snappy(#[from] snap::Error),
#[error(transparent)]
#[cfg(feature = "zstd")]
#[cfg_attr(docsrs, doc(cfg(feature = "zstd")))]
Zstd(std::io::Error),
}
#[derive(Debug, thiserror::Error)]
pub enum DecompressError {
#[error(transparent)]
#[cfg(feature = "brotli")]
#[cfg_attr(docsrs, doc(cfg(feature = "brotli")))]
Brotli(std::io::Error),
#[error(transparent)]
#[cfg(feature = "lz4")]
#[cfg_attr(docsrs, doc(cfg(feature = "lz4")))]
Lz4(#[from] lz4_flex::block::DecompressError),
#[error(transparent)]
#[cfg(feature = "snappy")]
#[cfg_attr(docsrs, doc(cfg(feature = "snappy")))]
Snappy(#[from] snap::Error),
#[error(transparent)]
#[cfg(feature = "zstd")]
#[cfg_attr(docsrs, doc(cfg(feature = "zstd")))]
Zstd(#[from] std::io::Error),
}
#[derive(Debug, thiserror::Error)]
pub enum CompressionError {
#[error(transparent)]
Compress(#[from] CompressError),
#[error(transparent)]
Decompress(#[from] DecompressError),
#[error("the {algo} is supported but the feature {feature} is disabled")]
Disabled {
algo: CompressAlgorithm,
feature: &'static str,
},
#[error("unknown compress algorithm {0}")]
UnknownAlgorithm(CompressAlgorithm),
}
impl CompressionError {
#[cfg(not(all(
feature = "brotli",
feature = "lz4",
feature = "snappy",
feature = "zstd"
)))]
#[inline]
pub(crate) const fn disabled(algo: CompressAlgorithm, feature: &'static str) -> Self {
Self::Disabled { algo, feature }
}
}