Uuid: implement Serlialize/Deserialize

This commit is contained in:
Dietmar Maurer 2020-08-02 11:49:36 +02:00
parent c8e6462cc7
commit a7390a3d0e

View File

@ -140,3 +140,27 @@ pub mod string_as_base64 {
}) })
} }
} }
use crate::tools::uuid::Uuid;
use ::serde::{Deserialize, Serialize, Serializer, Deserializer};
impl Serialize for Uuid {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
serializer.serialize_str(&format!("{}", self))
}
}
impl<'de> Deserialize<'de> for Uuid {
fn deserialize<D>(deserializer: D) -> Result<Uuid, D::Error>
where
D: Deserializer<'de>,
{
use serde::de::Error;
String::deserialize(deserializer).and_then(|string| {
Uuid::parse_str(&string).map_err(|err| Error::custom(err.to_string()))
})
}
}