use std::str::FromStr;
use serde::{Deserialize, Deserializer};
use uuid::Uuid;
pub(crate) fn valid_uuid<'de, D: Deserializer<'de>>(d: D) -> Result<Option<Uuid>, D::Error> {
let o: Option<String> = Option::deserialize(d)?;
Ok(o.and_then(|s| Uuid::parse_str(&s).ok()))
}
pub(crate) fn valid_enum<'de, T: FromStr, D: Deserializer<'de>>(
d: D,
) -> Result<Option<T>, D::Error> {
let o: Option<String> = Option::deserialize(d)?;
Ok(o.and_then(|s| T::from_str(&s).ok()))
}