Serde support for uuid

main
Pantonshire 4 years ago
parent c0f0a3a017
commit 18767a8837

@ -2,3 +2,6 @@
name = "libshire"
version = "0.1.0"
edition = "2021"
[dependencies]
serde = { version = "1", optional = true }

@ -138,6 +138,29 @@ impl fmt::Display for Uuid {
}
}
#[cfg(feature = "serde")]
impl serde::Serialize for Uuid {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer
{
// TODO: replace with a better string conversion function
serializer.serialize_str(&self.to_string())
}
}
#[cfg(feature = "serde")]
impl<'de> serde::Deserialize<'de> for Uuid {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>
{
let s: &str = serde::Deserialize::deserialize(deserializer)?;
s.parse()
.map_err(serde::de::Error::custom)
}
}
#[derive(Debug)]
pub enum ParseError {
NotEnoughGroups(usize),

Loading…
Cancel
Save