ed-journals 0.5.0

Provides models for representing and parsing elite dangerous journal files
Documentation
#[macro_export]
#[doc(hidden)]
macro_rules! from_str_deserialize_impl {
    ($ty:ty) => {
        impl<'de> serde::Deserialize<'de> for $ty {
            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
            where
                D: serde::Deserializer<'de>,
            {
                let s = String::deserialize(deserializer)?;
                FromStr::from_str(&s).map_err(|value| {
                    serde::de::Error::custom(format!("Failed to deserialize: got '{}'", value))
                })
            }
        }
    };
}

#[macro_export]
#[doc(hidden)]
macro_rules! try_from_deserialize_impl {
    ($f:ident => $ty:ident) => {
        impl<'de> serde::Deserialize<'de> for $ty {
            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
            where
                D: serde::Deserializer<'de>,
            {
                let value = $f::deserialize(deserializer)?;

                $ty::try_from(value).map_err(|_e| {
                    serde::de::Error::custom(format!("Failed to deserialize: got '{}'", value))
                })
            }
        }
    };
}