omg_serde 0.1.0

Adds serde support to omg_core.
Documentation
use omg_core::data::input::IntInput;
use omg_core::data::math::transformer::threshold::OverwriteWithThreshold;
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct OverwriteWithThresholdSerde<T: IntInput> {
    value: T,
    threshold: T,
}

impl<T: IntInput> From<OverwriteWithThresholdSerde<T>> for OverwriteWithThreshold<T> {
    fn from(overwrite: OverwriteWithThresholdSerde<T>) -> Self {
        OverwriteWithThreshold::new(overwrite.value, overwrite.threshold)
    }
}

impl<T: IntInput> From<&OverwriteWithThreshold<T>> for OverwriteWithThresholdSerde<T> {
    fn from(overwrite: &OverwriteWithThreshold<T>) -> Self {
        OverwriteWithThresholdSerde {
            value: overwrite.value(),
            threshold: overwrite.threshold(),
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_conversion() {
        let start = OverwriteWithThreshold::new(8, 9);
        let serde: OverwriteWithThresholdSerde<u8> = (&start).into();

        assert_eq!(OverwriteWithThreshold::from(serde), start);
    }
}