rsiot/message/eav/
value_type.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/// Тип сохраняемого значения
#[allow(non_camel_case_types)]
#[derive(Debug, Clone)]
pub enum ValueType {
    /// bool
    bool(bool),

    /// f64
    f64(f64),

    /// String
    String(String),

    /// u64
    u64(u64),
}

impl From<bool> for ValueType {
    fn from(value: bool) -> Self {
        ValueType::bool(value)
    }
}

impl From<f64> for ValueType {
    fn from(value: f64) -> Self {
        ValueType::f64(value)
    }
}

impl From<String> for ValueType {
    fn from(value: String) -> Self {
        ValueType::String(value)
    }
}

impl From<u64> for ValueType {
    fn from(value: u64) -> Self {
        ValueType::u64(value)
    }
}

impl From<ValueType> for u64 {
    fn from(value: ValueType) -> Self {
        match value {
            ValueType::bool(_) => todo!(),
            ValueType::f64(value) => value as u64,
            ValueType::String(_) => todo!(),
            ValueType::u64(value) => value,
        }
    }
}

impl Default for ValueType {
    fn default() -> Self {
        Self::f64(0.0)
    }
}