use serde::{ de::{ self, Unexpected, }, Serializer, Deserializer, Deserialize, }; /// Seiralize bool into "yes"/"no", just like the LunaNode API does. pub fn serialize(succ: &bool, serializer: S) -> Result where S: Serializer { match succ { true => serializer.serialize_str("1"), false => serializer.serialize_str(""), } } /// Deserialize bool from String with custom value mapping "yes" => true, "no" => false pub fn deserialize<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, { match String::deserialize(deserializer)?.as_ref() { "1" => Ok(true), "" => Ok(false), other => Err(de::Error::invalid_value( Unexpected::Str(other), &"\"1\" or \"\"", )), } }