pub fn non_empty_str<'de, D: Deserializer<'de>>(
    d: D
) -> Result<Option<String>, D::Error>