diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6e5335a..0e9234d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -208,7 +208,7 @@ x86_64-gnulinux-tarpaulin: image: amd64/rust:1 variables: TARGET: x86_64 - REQ_COVERAGE: "79.7" + REQ_COVERAGE: "79.6" cache: key: $CI_JOB_NAME paths: diff --git a/src/serdeize.rs b/src/serdeize.rs index e633d0a..9e18da2 100644 --- a/src/serdeize.rs +++ b/src/serdeize.rs @@ -13,6 +13,8 @@ // and // . +#[cfg(feature = "unwrapped")] +use crate::Unwrapped; use crate::{ types::extra::{LeEqU128, LeEqU16, LeEqU32, LeEqU64, LeEqU8}, FixedI128, FixedI16, FixedI32, FixedI64, FixedI8, FixedU128, FixedU16, FixedU32, FixedU64, @@ -34,12 +36,20 @@ macro_rules! serde_fixed { state.end() } } + impl Serialize for Wrapping<$Fixed> { fn serialize(&self, serializer: S) -> Result { self.0.serialize(serializer) } } + #[cfg(feature = "unwrapped")] + impl Serialize for Unwrapped<$Fixed> { + fn serialize(&self, serializer: S) -> Result { + self.0.serialize(serializer) + } + } + impl<'de, Frac: $LeEqU> Deserialize<'de> for $Fixed { fn deserialize>(deserializer: D) -> Result { struct FixedVisitor; @@ -86,6 +96,13 @@ macro_rules! serde_fixed { $Fixed::deserialize(deserializer).map(Wrapping) } } + + #[cfg(feature = "unwrapped")] + impl<'de, Frac: $LeEqU> Deserialize<'de> for Unwrapped<$Fixed> { + fn deserialize>(deserializer: D) -> Result { + $Fixed::deserialize(deserializer).map(Unwrapped) + } + } }; }