//! Custom serialization methods used throughout the crate /// Deserialize/Serialize `Modality` to integer(0, 1, -1). pub mod modality { use crate::Modality; use serde::{de, Deserialize, Serializer}; pub fn deserialize<'de, D>(d: D) -> Result where D: de::Deserializer<'de>, { let v = i8::deserialize(d)?; match v { 0 => Ok(Modality::Minor), 1 => Ok(Modality::Major), -1 => Ok(Modality::NoResult), _ => Err(de::Error::invalid_value( de::Unexpected::Signed(v.into()), &"valid value: 0, 1, -1", )), } } pub fn serialize(x: &Modality, s: S) -> Result where S: Serializer, { match x { Modality::Minor => s.serialize_i8(0), Modality::Major => s.serialize_i8(1), Modality::NoResult => s.serialize_i8(-1), } } }