use std::str::FromStr; use serde::{Deserialize, Deserializer}; /// Serde deserialization decorator to map empty Strings to None, pub fn empty_string_as_none<'de, D, T>(de: D) -> Result, D::Error> where D: Deserializer<'de>, T: FromStr, T::Err: std::fmt::Display, { let opt = Option::::deserialize(de)?; match opt.as_deref() { None | Some("") => Ok(None), Some(s) => FromStr::from_str(s) .map_err(serde::de::Error::custom) .map(Some), } }