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}