use serde::{Deserialize, Deserializer};
pub fn zero_as_none<'de, D, T>(deserializer: D) -> Result<Option<T>, D::Error>
where
D: Deserializer<'de>,
T: Deserialize<'de> + PartialEq + Default,
{
let value = Option::<T>::deserialize(deserializer)?;
match value {
Some(val) if val == T::default() => Ok(None),
other => Ok(other),
}
}
pub fn combine_text_with_empty_line(combined: &mut String, text: &str) {
if !combined.is_empty() {
if combined.ends_with('\n') {
combined.push('\n');
} else if !combined.is_empty() {
combined.push_str("\n\n");
}
}
combined.push_str(text);
}