use std::path::PathBuf; use serde::Deserialize; use serde::Deserializer; use serde::Serialize; use serde::Serializer; #[cfg(test)] pub(crate) fn nullable_string_schema( generator: &mut schemars::r#gen::SchemaGenerator, ) -> schemars::schema::Schema { generator.subschema_for::>() } pub fn deserialize_empty_path_as_none<'de, D>(deserializer: D) -> Result, D::Error> where D: Deserializer<'de>, { let path = Option::::deserialize(deserializer)?; Ok(path.filter(|path| !path.as_os_str().is_empty())) } pub fn deserialize_double_option<'de, T, D>(deserializer: D) -> Result>, D::Error> where T: Deserialize<'de>, D: Deserializer<'de>, { serde_with::rust::double_option::deserialize(deserializer) } pub fn serialize_double_option( value: &Option>, serializer: S, ) -> Result where T: Serialize, S: Serializer, { serde_with::rust::double_option::serialize(value, serializer) }