Common/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#![allow(non_snake_case, non_camel_case_types)]
7
8/// A helper module for serializing and deserializing `url::Url` with `serde`.
9/// This is used in DTOs where a `Url` field needs to be serialized to a string.
10pub mod URLSerializationHelper {
11
12	use serde::{self, Deserialize, Deserializer, Serializer};
13	use url::Url;
14
15	pub fn serialize<S>(URLInstance:&Url, SerializerInstance:S) -> Result<S::Ok, S::Error>
16	where
17		S: Serializer, {
18		SerializerInstance.serialize_str(URLInstance.as_str())
19	}
20
21	pub fn deserialize<'de, D>(DeserializerInstance:D) -> Result<Url, D::Error>
22	where
23		D: Deserializer<'de>, {
24		let StringValue = String::deserialize(DeserializerInstance)?;
25
26		Url::parse(&StringValue).map_err(serde::de::Error::custom)
27	}
28}