From a7390a3d0e73bbc7f64cb40c9217d52850858afb Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Sun, 2 Aug 2020 11:49:36 +0200 Subject: [PATCH] Uuid: implement Serlialize/Deserialize --- proxmox/src/tools/serde.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/proxmox/src/tools/serde.rs b/proxmox/src/tools/serde.rs index d6a5b771..f9c7e497 100644 --- a/proxmox/src/tools/serde.rs +++ b/proxmox/src/tools/serde.rs @@ -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(&self, serializer: S) -> Result + where + S: Serializer, + { + serializer.serialize_str(&format!("{}", self)) + } +} + +impl<'de> Deserialize<'de> for Uuid { + fn deserialize(deserializer: D) -> Result + 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())) + }) + } +}