Skip to content

Commit b40e44e

Browse files
authored
Emulate #[serde(transparent)] in serialization (#32)
1 parent 6ddcd98 commit b40e44e

File tree

5 files changed

+7
-10
lines changed

5 files changed

+7
-10
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
* The old macros can be replaced like follows: `int!(42)` -> `Int::from(42_i32)` etc.
77
* The `int!` and `uint!` macros now support arbitrary const expressions, not just literals
88
* `Int::new` and `UInt::new` are now const
9+
* Breaking: Serialization of `Int` and `UInt` now call the serialization of `i64` and `u64` directly instead of
10+
serializing them as newtype structs, emulating `#[serde(transparent)]`.
11+
This doesn't make a difference for `serde_json` for example, but it could make a difference for other serializers
912

1013
# 0.2.2
1114

src/int.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ impl Serialize for Int {
613613
where
614614
S: Serializer,
615615
{
616-
serializer.serialize_newtype_struct("Int", &self.0)
616+
self.0.serialize(serializer)
617617
}
618618
}
619619

src/uint.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ impl Serialize for UInt {
604604
where
605605
S: Serializer,
606606
{
607-
serializer.serialize_newtype_struct("UInt", &self.0)
607+
self.0.serialize(serializer)
608608
}
609609
}
610610

tests/int.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ fn serialize() {
1313
}
1414

1515
fn assert_serialize(number: i32) {
16-
assert_ser_tokens(
17-
&Int::from(number),
18-
&[Token::NewtypeStruct { name: "Int" }, Token::I64(number as _)],
19-
)
16+
assert_ser_tokens(&Int::from(number), &[Token::I64(number as _)])
2017
}
2118

2219
#[test]

tests/uint.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@ fn serialize() {
1212
}
1313

1414
fn assert_serialize(number: u32) {
15-
assert_ser_tokens(
16-
&UInt::from(number),
17-
&[Token::NewtypeStruct { name: "UInt" }, Token::U64(number as _)],
18-
)
15+
assert_ser_tokens(&UInt::from(number), &[Token::U64(number as _)])
1916
}
2017

2118
#[test]

0 commit comments

Comments
 (0)