oxide_spark_utils/
measure.rs

1use 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}