rsiot_messages_core/
msg_serde.rs1use super::message::Message;
2
3use serde::{de::DeserializeOwned, Serialize};
4
5#[cfg(feature = "serde-json")]
6use serde_json::{from_str as deserialize, to_string as serialize};
7
8impl<TData> Message<TData>
9where
10 TData: DeserializeOwned + Serialize,
11{
12 #[cfg(not(feature = "serde-json"))]
13 pub fn serialize(&self) -> Result<String, crate::Error> {
14 let err = "Serialization feature not select".to_string();
15 Err(crate::Error::Serialization(err))
16 }
17
18 #[cfg(not(feature = "serde-json"))]
19 pub fn deserialize(_text: &str) -> Result<Self, crate::Error> {
20 let error = "Serialization feature not select".to_string();
21 let data = "".to_string();
22 Err(crate::Error::Deserialization { error, data })
23 }
24
25 #[cfg(feature = "serde-json")]
27 pub fn serialize(&self) -> Result<String, crate::Error> {
28 match serialize::<Self>(self) {
29 Ok(value) => Ok(value),
30 Err(error) => {
31 let error = error.to_string();
32 Err(crate::Error::Serialization(error))
33 }
34 }
35 }
36
37 #[cfg(feature = "serde-json")]
39 pub fn deserialize(text: &str) -> Result<Self, crate::Error> {
40 match deserialize::<Self>(text) {
41 Ok(value) => Ok(value),
42 Err(error) => {
43 let error = error.to_string();
44 let data = text.to_string();
45 Err(crate::Error::Deserialization { error, data })
46 }
47 }
48 }
49}