stock-trek 0.4.7

Stock Trek time-series analysis
Documentation
use serde::{
    de::{Error, Unexpected},
    Deserialize, Deserializer, Serialize, Serializer,
};
use std::cmp::Ordering;

pub fn serialize<S: Serializer>(ordering: &Ordering, serializer: S) -> Result<S::Ok, S::Error> {
    (*ordering as i8).serialize(serializer)
}

pub fn deserialize<'de, D>(deserializer: D) -> Result<Ordering, D::Error>
where
    D: Deserializer<'de>,
{
    i8::deserialize(deserializer).and_then(|i| match i {
        -1 => Ok(Ordering::Less),
        0 => Ok(Ordering::Equal),
        1 => Ok(Ordering::Greater),
        _ => Err(D::Error::invalid_value(
            Unexpected::Signed(i.into()),
            &"an integer in the range of -1i8..=1i8",
        )),
    })
}