aboutsummaryrefslogtreecommitdiffstats
path: root/src/logging/level.rs
blob: 6134c24b76cfed524441d5985694bb3e2f5a37d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use serde::{Deserialize, Deserializer, Serialize, Serializer};
pub use tracing::Level;

pub fn serialize<S>(value: &Option<Level>, serializer: S) -> Result<S::Ok, S::Error>
where
    S: Serializer,
{
    value
        .map(|l| l.to_string().to_lowercase())
        .serialize(serializer)
}

pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<Level>, D::Error>
where
    D: Deserializer<'de>,
{
    let Some(s) = Option::<String>::deserialize(deserializer)? else {
    return Ok(None)
};
    s.parse().map_err(serde::de::Error::custom).map(Some)
}