1use serde::{Deserialize, Deserializer, Serializer};
4
5pub(crate) mod option {
6 use super::*;
7 use serde::Serialize;
8
9 pub(crate) fn serialize<S>(color: &Option<u32>, serializer: S) -> Result<S::Ok, S::Error>
10 where
11 S: Serializer,
12 {
13 color.map(|e| format!("{:06x}", e)).serialize(serializer)
14 }
15
16 pub(crate) fn deserialize<'de, D>(deserializer: D) -> Result<Option<u32>, D::Error>
17 where
18 D: Deserializer<'de>,
19 {
20 let s: Option<String> = Deserialize::deserialize(deserializer)?;
21
22 s.map(|e| u32::from_str_radix(&e, 16))
23 .transpose()
24 .map_err(serde::de::Error::custom)
25 }
26}