memberlist_proto/compression/
error.rs

1use super::CompressAlgorithm;
2
3/// Compress errors.
4#[derive(Debug, thiserror::Error)]
5pub enum CompressError {
6  /// Lz4 compress errors
7  #[error(transparent)]
8  #[cfg(feature = "lz4")]
9  #[cfg_attr(docsrs, doc(cfg(feature = "lz4")))]
10  Lz4(#[from] lz4_flex::block::CompressError),
11  /// Brotli compress errors
12  #[error(transparent)]
13  #[cfg(feature = "brotli")]
14  #[cfg_attr(docsrs, doc(cfg(feature = "brotli")))]
15  Brotli(std::io::Error),
16  /// Snappy compress errors
17  #[error(transparent)]
18  #[cfg(feature = "snappy")]
19  #[cfg_attr(docsrs, doc(cfg(feature = "snappy")))]
20  Snappy(#[from] snap::Error),
21  /// Zstd compress errors
22  #[error(transparent)]
23  #[cfg(feature = "zstd")]
24  #[cfg_attr(docsrs, doc(cfg(feature = "zstd")))]
25  Zstd(std::io::Error),
26}
27
28/// Decompress errors.
29#[derive(Debug, thiserror::Error)]
30pub enum DecompressError {
31  /// Brotli decompress errors
32  #[error(transparent)]
33  #[cfg(feature = "brotli")]
34  #[cfg_attr(docsrs, doc(cfg(feature = "brotli")))]
35  Brotli(std::io::Error),
36  /// LZ4 decompress errors
37  #[error(transparent)]
38  #[cfg(feature = "lz4")]
39  #[cfg_attr(docsrs, doc(cfg(feature = "lz4")))]
40  Lz4(#[from] lz4_flex::block::DecompressError),
41  /// Snappy decompress errors
42  #[error(transparent)]
43  #[cfg(feature = "snappy")]
44  #[cfg_attr(docsrs, doc(cfg(feature = "snappy")))]
45  Snappy(#[from] snap::Error),
46  /// Zstd decompress errors
47  #[error(transparent)]
48  #[cfg(feature = "zstd")]
49  #[cfg_attr(docsrs, doc(cfg(feature = "zstd")))]
50  Zstd(#[from] std::io::Error),
51}
52
53/// Compress/Decompress errors.
54#[derive(Debug, thiserror::Error)]
55pub enum CompressionError {
56  /// Compress errors
57  #[error(transparent)]
58  Compress(#[from] CompressError),
59  /// Decompress errors
60  #[error(transparent)]
61  Decompress(#[from] DecompressError),
62  /// Disabled
63  #[error("the {algo} is supported but the feature {feature} is disabled")]
64  Disabled {
65    /// The algorithm want to use
66    algo: CompressAlgorithm,
67    /// The feature that is disabled
68    feature: &'static str,
69  },
70  /// Unknown compressor
71  #[error("unknown compress algorithm {0}")]
72  UnknownAlgorithm(CompressAlgorithm),
73}
74
75impl CompressionError {
76  #[cfg(not(all(
77    feature = "brotli",
78    feature = "lz4",
79    feature = "snappy",
80    feature = "zstd"
81  )))]
82  #[inline]
83  pub(crate) const fn disabled(algo: CompressAlgorithm, feature: &'static str) -> Self {
84    Self::Disabled { algo, feature }
85  }
86}