rsiot/message/phy_quantity/quantities/
temperature.rs

1use super::super::{PhyQuantity, QuantityName};
2
3const C_TO_K: f64 = 273.15;
4
5impl PhyQuantity {
6    /// Задать температуру в \[℃\]
7    pub fn new_temperature_C(value: f64) -> Self {
8        Self {
9            value: value + C_TO_K,
10            quantity_name: QuantityName::Temperature,
11        }
12    }
13
14    /// Получить температуру в \[℃\]
15    pub fn temperature_C(&self) -> Result<f64, String> {
16        match self.quantity_name {
17            QuantityName::Temperature => {
18                let value = self.value - C_TO_K;
19                Ok(value)
20            }
21            _ => {
22                let err = format!(
23                    "You exprect temperature, but current unit: {:?}; value: {:?}",
24                    self.quantity_name, self
25                );
26                Err(err.to_string())
27            }
28        }
29    }
30}