1use integral_enum::IntegralEnum;
2#[cfg(feature = "serde")]
3use serde::{
4 Deserialize,
5 Serialize,
6};
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10pub enum ForwardCompression {
11 NoCompression,
12 Compress { with_threshold: usize },
13}
14
15#[derive(Debug, Clone, PartialEq, Eq)]
16#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
17pub enum DecompressionConstraint {
18 Max(usize),
19 MaxSizeMultiplier(usize),
20}
21
22#[derive(Debug, Clone, PartialEq, Eq)]
23#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
24pub enum DecompressionStrategy {
25 ConstrainedConst { constraint: DecompressionConstraint },
26 Unconstrained,
27}
28
29#[derive(Debug, Clone, PartialEq, Eq)]
30#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
31pub enum CompressionStatus {
32 Uncompressed,
33 Compressed { before: usize, after: usize },
34}
35
36#[derive(IntegralEnum)]
37#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
38#[repr(u8)]
39pub enum CompressionAlgorithm {
40 #[cfg_attr(feature = "serde", serde(rename = "zstd"))]
41 ZStd = 0,
42
43 #[cfg_attr(feature = "serde", serde(rename = "deflate"))]
44 Deflate = 1,
45}
46
47pub use mid_compression as impl_;