pub fn serialize<S: serde::Serializer>(
value: &Vec<tracing_subscriber::filter::Directive>,
serializer: S,
) -> Result<S::Ok, S::Error> {
let mut x = serializer.serialize_seq(Some(value.len()))?;
for i in value {
serde::ser::SerializeSeq::serialize_element(&mut x, &i.to_string())?;
}
serde::ser::SerializeSeq::end(x)
}
pub fn deserialize<'de, D>(
deserializer: D,
) -> Result<Vec<tracing_subscriber::filter::Directive>, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = <Vec<String> as serde::Deserialize>::deserialize(deserializer)?;
value
.into_iter()
.map(|s| <tracing_subscriber::filter::Directive as std::str::FromStr>::from_str(&s))
.collect::<Result<Vec<_>, _>>()
.map_err(|e| serde::de::Error::custom(format!("invalid directive: `{e}`")))
}