uri_rs/
serde.rs

1use serde::{Serialize, Serializer, Deserialize, Deserializer};
2use crate::Uri;
3
4/// Default Serializer
5impl Serialize for Uri {
6  fn serialize<S>(&self, serializer: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
7  where
8    S: Serializer,
9  {
10    let text = self.to_string();
11    text.serialize(serializer)
12  }
13}
14
15/// Default Deserializer
16impl<'de> Deserialize<'de> for Uri {
17  fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
18  where
19    D: Deserializer<'de>,
20  {
21    let deserialized_str = String::deserialize(deserializer)?;
22    Uri::parse(&deserialized_str).map_err(serde::de::Error::custom)
23  }
24}