rsiot/components/cmp_math/algs/mod.rs
1pub mod last_over_time_window;
2pub mod simple_moving_average;
3
4use std::time::Duration;
5
6use super::{Error, IntMsgBound, Result};
7
8/// Перечень алгоритмов для обработки данных
9pub enum Algs<TIntMsg>
10where
11 TIntMsg: IntMsgBound,
12{
13 /// Выборка последних значений в каждом периоде времени
14 LastOverTimeWindow {
15 /// Входящие сообщения
16 fn_input_value: fn(TIntMsg) -> Option<f64>,
17 /// Период времени, за который выбирается последнее значение
18 ///
19 /// Константа: `|_| Some(Duration::from_millis(100))`
20 fn_input_window: fn(TIntMsg) -> Option<Duration>,
21
22 /// Исходящие сообщения
23 fn_output: fn(f64) -> TIntMsg,
24 },
25 /// Простое скользящее среднее
26 SimpleMovingAverage {
27 /// Входящие сообщения
28 fn_input_value: fn(TIntMsg) -> Option<f64>,
29 /// Количество значений
30 ///
31 /// Константа: `|_| Some(100)`
32 fn_input_count: fn(TIntMsg) -> Option<usize>,
33 /// Исходящие сообщения
34 fn_output: fn(f64) -> TIntMsg,
35 },
36}