fast_log/
consts.rs

1use crate::error::LogError;
2
3#[derive(Clone, Copy)]
4pub enum LogSize {
5    B(usize),
6    KB(usize),
7    MB(usize),
8    GB(usize),
9    TB(usize),
10    EB(usize),
11}
12
13impl LogSize {
14    pub fn len(&self) -> usize {
15        match self {
16            Self::B(b) => *b,
17            Self::KB(kb) => kb * 1024,
18            Self::MB(mb) => mb * 1024 * 1024,
19            Self::GB(gb) => gb * 1024 * 1024 * 1024,
20            Self::TB(tb) => tb * 1024 * 1024 * 1024 * 1024,
21            Self::EB(eb) => eb * 1024 * 1024 * 1024 * 1024 * 1024,
22        }
23    }
24
25    pub fn get_len(&self) -> usize {
26        self.len()
27    }
28
29    pub fn parse(value: &str) -> Result<Self, LogError> {
30        if value.ends_with("EB") {
31            Ok(Self::EB(
32                value.trim_end_matches("EB").parse().unwrap_or_default(),
33            ))
34        } else if value.ends_with("TB") {
35            Ok(Self::TB(
36                value.trim_end_matches("TB").parse().unwrap_or_default(),
37            ))
38        } else if value.ends_with("GB") {
39            Ok(Self::GB(
40                value.trim_end_matches("GB").parse().unwrap_or_default(),
41            ))
42        } else if value.ends_with("MB") {
43            Ok(Self::MB(
44                value.trim_end_matches("MB").parse().unwrap_or_default(),
45            ))
46        } else if value.ends_with("KB") {
47            Ok(Self::KB(
48                value.trim_end_matches("KB").parse().unwrap_or_default(),
49            ))
50        } else if value.ends_with("B") {
51            Ok(Self::B(
52                value.trim_end_matches("B").parse().unwrap_or_default(),
53            ))
54        } else {
55            Err(LogError::from("unknow LogSize"))
56        }
57    }
58}