mithril_common/entities/
compression_algorithm.rs1use serde::{Deserialize, Serialize};
2use strum::{Display, EnumIter, IntoEnumIterator};
3
4#[derive(
6 Debug,
7 Clone,
8 Copy,
9 Serialize,
10 Deserialize,
11 PartialEq,
12 Eq,
13 PartialOrd,
14 Ord,
15 Default,
16 EnumIter,
17 Display,
18)]
19#[serde(rename_all = "lowercase")]
20pub enum CompressionAlgorithm {
21 #[default]
23 Gzip,
24 Zstandard,
26}
27
28impl CompressionAlgorithm {
29 pub fn tar_file_extension(&self) -> String {
31 match self {
32 CompressionAlgorithm::Gzip => "tar.gz".to_owned(),
33 CompressionAlgorithm::Zstandard => "tar.zst".to_owned(),
34 }
35 }
36
37 pub fn list() -> Vec<Self> {
39 Self::iter().collect()
40 }
41
42 pub fn free_space_snapshot_ratio(&self) -> f64 {
47 match self {
48 CompressionAlgorithm::Gzip => 2.5,
49 CompressionAlgorithm::Zstandard => 4.0,
50 }
51 }
52}