Skip to main content

rsiot/message/
msg_data_bound.rs

1use std::fmt::Debug;
2
3use serde::{Serialize, de::DeserializeOwned};
4
5use crate::message::Message;
6
7use super::MsgKey;
8
9/// Ограничения на данные, которые могут содержать сообщения
10///
11/// На перечислениях можно автоматически реализовывать трейты:
12///
13/// ```rust
14/// use serde::{Deserialize, Serialize};
15///
16/// #[derive(Clone, Debug, Deserialize, MsgKey, PartialEq, Serialize)]
17/// ```
18pub trait MsgDataBound:
19    Clone + Debug + DeserializeOwned + MsgKey + PartialEq + Send + Serialize + Sync
20{
21    /// Преобразовать данные в сообщение MsgData::Custom
22    fn to_message(self) -> Message<Self> {
23        Message::new_custom(self)
24    }
25}