use serde::{Deserialize, Deserializer, Serialize, Serializer};
pub fn deserialize_present<'de, D: Deserializer<'de>, T: Deserialize<'de>>(
deserializer: D,
) -> Result<Option<T>, D::Error> {
T::deserialize(deserializer).map(Some)
}
pub fn deserialize_merge<'de, D: Deserializer<'de>, T: Deserialize<'de>>(
deserializer: D,
) -> Result<Option<(bool, T)>, D::Error> {
T::deserialize(deserializer).map(|value| Some((false, value)))
}
pub fn serialize_merge<S: Serializer, T: Serialize>(
value: &Option<(bool, T)>,
serializer: S,
) -> Result<S::Ok, S::Error> {
value.as_ref().map(|(_, value)| value).serialize(serializer)
}