oxide_spark_utils/
measure.rs1use std::fmt::Display;
2
3use serde::Deserialize;
4use strum::EnumDiscriminants;
5
6#[derive(Clone, Copy, EnumDiscriminants)]
7#[strum_discriminants(derive(Deserialize, strum::Display, Hash), name(MeasureKind))]
8pub enum Measure {
9 Acceleration(f32, f32, f32),
10 Gyroscope(f32, f32, f32),
11 Humidity(f32),
12 InfraredLight(f32),
13 Pressure(f32),
14 Temperature(f32),
15 VisibleInfraredLight(f32),
16}
17
18impl Display for Measure {
19 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20 write!(
21 f,
22 "{}",
23 match self {
24 Measure::Acceleration(x, y, z) | Measure::Gyroscope(x, y, z) =>
25 format!("{}_{}_{}", x, y, z),
26 Measure::Humidity(m)
27 | Measure::InfraredLight(m)
28 | Measure::Pressure(m)
29 | Measure::Temperature(m)
30 | Measure::VisibleInfraredLight(m) => format!("{}", m),
31 }
32 )
33 }
34}