1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// currently there is no generic way to handle Option<T>
// 2 alertnatives:
// - write custom serializer
// - try to use the crate serde_with (serde_as)
//
// Creating, aliasing module with custom (de)serializer,
// also simplify the generation and introduce a small layer of abstraction/documentation.
//
// see [Using de/serialize\_with inside of an Option, Map, Vec · Issue #723 · serde-rs/serde](https://github.com/serde-rs/serde/issues/723)
pub
// pub(crate) mod fluent_uri {
// use serde::{de::Error, Deserialize, Deserializer, Serializer};
// pub fn deserialize<'de, D>(deserializer: D) -> Result<fluent_uri::UriRef<String>, D::Error>
// where
// D: Deserializer<'de>,
// {
// let txt = String::deserialize(deserializer)?;
// fluent_uri::UriRef::parse(txt).map_err(|e| match e {
// fluent_uri::
// }
// D::Error::custom)
// }
// pub fn serialize<S>(input: &fluent_uri::UriRef<String>, serializer: S) -> Result<S::Ok, S::Error>
// where
// S: Serializer,
// {
// serializer.collect_str(input.as_str())
// }
// }