use serde::{Serialize, Serializer, Deserialize, Deserializer}; use crate::SeString; impl Serialize for SeString { fn serialize(&self, serializer: S) -> Result where S: Serializer { self.encode().serialize(serializer) } } impl<'de> Deserialize<'de> for SeString { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { let bytes = Vec::::deserialize(deserializer)?; SeString::parse(&bytes).map_err(|e| serde::de::Error::custom(format!("invalid sestring: {:?}", e))) } }