CommonLibrary/Utility/Serialization.rs
1//! # Serialization Utilities
2//!
3//! Contains helper modules for custom `serde` serialization and deserialization
4//! logic for types used in DTOs.
5
6/// A helper module for serializing and deserializing `url::Url` with `serde`.
7/// This is used in DTOs where a `Url` field needs to be serialized to a string.
8pub mod URLSerializationHelper {
9
10 use serde::{self, Deserialize, Deserializer, Serializer};
11 use url::Url;
12
13 pub fn serialize<S>(URLInstance:&Url, SerializerInstance:S) -> Result<S::Ok, S::Error>
14 where
15 S: Serializer, {
16 SerializerInstance.serialize_str(URLInstance.as_str())
17 }
18
19 pub fn deserialize<'de, D>(DeserializerInstance:D) -> Result<Url, D::Error>
20 where
21 D: Deserializer<'de>, {
22 let StringValue = String::deserialize(DeserializerInstance)?;
23
24 Url::parse(&StringValue).map_err(serde::de::Error::custom)
25 }
26}