pub mod serde {
use serde::Deserialize;
use serde::Deserializer;
pub fn optional_vector<'de, D, T>(deserializer: D) -> Result<Vec<T>, D::Error>
where
D: Deserializer<'de>,
T: Deserialize<'de>,
{
match Option::deserialize(deserializer) {
Ok(Some(v)) => Ok(v),
Ok(None) => Ok(Vec::new()),
Err(e) => Err(e),
}
}
pub fn nullable_vector<'de, D, T>(deserializer: D) -> Result<Vec<T>, D::Error>
where
D: Deserializer<'de>,
T: Deserialize<'de>,
{
Vec::<Option<T>>::deserialize(deserializer).map(|v| v.into_iter().flatten().collect())
}
}