rsiot/components/cmp_filesystem/
config.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use crate::message::{Message, MsgDataBound};

/// Функция преобразования сообщений в текстовые файлы.
///
/// Возращает кортеж из двух значений:
/// - название файла для сохранения
/// - содержимое файла
pub type FnInput<TMsg> = fn(Message<TMsg>) -> anyhow::Result<Option<(String, String)>>;

/// Функция преобразования текстовых файлов в сообщения
pub type FnOutput<TMsg> = fn(&str) -> anyhow::Result<Option<Message<TMsg>>>;

/// Конфигурация cmp_filesystem
#[derive(Clone)]
pub struct Config<TMsg>
where
    TMsg: MsgDataBound,
{
    /// Папка, в которой хранятся файлы
    pub directory: String,

    /// Функция преобразования сообщений в текстовые файлы
    pub fn_input: FnInput<TMsg>,

    /// Функция преобразования текстовых файлов в сообщения
    pub fn_output: FnOutput<TMsg>,
}