plato_engine_block/
tick.rs1use crate::sensor::SensorSpec;
4
5#[derive(Debug, Clone)]
7pub struct Tick {
8 pub index: u64,
10 pub timestamp: f64,
12 pub data: Vec<(String, f64)>,
14}
15
16impl Tick {
17 pub fn from_sensors(index: u64, timestamp: f64, sensors: &[SensorSpec]) -> Self {
19 let data: Vec<(String, f64)> = sensors
20 .iter()
21 .map(|s| {
22 let val = (s.callback)();
23 (s.name.clone(), val)
24 })
25 .collect();
26 Tick {
27 index,
28 timestamp,
29 data,
30 }
31 }
32
33 pub fn get(&self, sensor_name: &str) -> Option<f64> {
35 self.data
36 .iter()
37 .find(|(name, _)| name == sensor_name)
38 .map(|(_, v)| *v)
39 }
40}