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}