rsiot/message/
service.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
28
29
30
31
32
33
34
35
36
37
use std::fmt::Debug;

/// Ограничения для перечисления сервисов
///
/// Добавить макросы для стуркуры:
/// ```rust
/// #[derive(Debug, Clone, PartialEq)]
/// ```
pub trait ServiceBound: Debug + Clone + PartialEq + Send + Sync {
    /// Возвращает строку для добавления в трассировку
    fn trace_name(&self) -> String {
        let full_str = format!("{:?}", self);
        full_str
    }
}

/// Запуск:
///
/// ```bash
/// cargo test --target="x86_64-unknown-linux-gnu" -- message::service::tests
/// ```
#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn trace_name() {
        #[derive(Debug, Clone, PartialEq)]
        enum Services {
            Service1,
        }

        impl ServiceBound for Services {}

        assert_eq!("Service1", Services::Service1.trace_name())
    }
}