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}