Skip to content

Commit

Permalink
Impl Serialize/Deserialize for portable types
Browse files Browse the repository at this point in the history
  • Loading branch information
agerasev committed Jul 21, 2024
1 parent 0d14596 commit a9fe7ee
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 6 deletions.
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ documentation = "https://docs.rs/flatty"
default = ["std"]
std = ["alloc", "flatty-base/std", "flatty-portable/std"]
alloc = ["flatty-base/alloc"]
serde = ["flatty-portable/serde"]

[dependencies]
flatty-macros = { workspace = true }
Expand Down
2 changes: 2 additions & 0 deletions portable/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ license.workspace = true
[features]
default = ["std"]
std = ["flatty-base/std", "num-traits/std"]
serde = ["dep:serde"]

[dependencies]
flatty-base.workspace = true
num-traits = { version = "0.2", default-features = false }
serde = { version = "1.0", optional = true }
4 changes: 2 additions & 2 deletions portable/src/float.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::{derive_display, NativeCast, Portable};
use crate::{impl_traits_for_native, NativeCast, Portable};
use core::{
cmp::{Ordering, PartialOrd},
ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Rem, RemAssign, Sub, SubAssign},
Expand Down Expand Up @@ -189,7 +189,7 @@ macro_rules! derive_float {
}
}

derive_display!($self, $native);
impl_traits_for_native!($self, $native);
};
}

Expand Down
4 changes: 2 additions & 2 deletions portable/src/int.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::{derive_display, NativeCast, Portable};
use crate::{impl_traits_for_native, NativeCast, Portable};
use core::{
cmp::{Ord, Ordering, PartialOrd},
ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Rem, RemAssign, Sub, SubAssign},
Expand Down Expand Up @@ -189,7 +189,7 @@ macro_rules! derive_int {
}
}

derive_display!($self, $native);
impl_traits_for_native!($self, $native);
};
}

Expand Down
23 changes: 21 additions & 2 deletions portable/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ pub mod traits {
pub use super::{NativeCast, Portable};
}

macro_rules! derive_display {
macro_rules! impl_traits_for_native {
($self:ty, $native:ty) => {
impl core::fmt::Debug for $self {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
Expand All @@ -57,7 +57,26 @@ macro_rules! derive_display {
<$native as core::fmt::Display>::fmt(&self.to_native(), f)
}
}

#[cfg(feature = "serde")]
impl serde::Serialize for $self {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
<$native as serde::Serialize>::serialize(&self.to_native(), serializer)
}
}
#[cfg(feature = "serde")]
impl<'de> serde::Deserialize<'de> for $self {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
<$native as serde::Deserialize<'de>>::deserialize(deserializer).map(<$self>::from_native)
}
}
};
}

pub(crate) use derive_display;
pub(crate) use impl_traits_for_native;

0 comments on commit a9fe7ee

Please sign in to comment.