Skip to main content

rsiot/components/cmp_derive_new/
config.rs

1use std::time::Duration;
2
3use super::BufferBound;
4
5pub type FnInput<TMsg, TBuffer> = fn(&TMsg, &TBuffer) -> Option<TBuffer>;
6pub type FnOutput<TMsg, TBuffer> = fn(&TBuffer) -> TMsg;
7
8/// Настройки cmp_derive
9pub struct Config<TMsg, TBuffer>
10where
11    TBuffer: BufferBound,
12{
13    /// Когда создавать исходящие сообщения
14    pub output_send: ConfigOutputSend,
15
16    /// Обработка входящих сообщений и сохранение в буфере
17    pub fn_input: FnInput<TMsg, TBuffer>,
18
19    /// Формирование исходящих сообщений на основе данных, сохраненных в `store`
20    pub fn_output: fn(&TBuffer) -> TMsg,
21}
22
23/// Настройка создания исходящих сообщений
24pub enum ConfigOutputSend {
25    /// Создавать по каждому изменению буфера
26    OnEveryChange,
27
28    /// Создавать периодически с заданным интервалом
29    Periodic(Duration),
30}