Skip to content

Commit b258666

Browse files
committed
Add ability to cache i128/u128 during serialization
`Content` size doesn't changed, because it is already big enough (64 bytes due to `TupleVariant` and `StructVariant`). Fixes (2): newtype::i128 (serialize) newtype::u128 (serialize) failures (6): newtype::enum_newtype (deserialize) newtype::enum_struct (deserialize) newtype::enum_tuple (deserialize) newtype::newtype_struct (deserialize) newtype::struct_ (deserialize) struct_ (deserialize)
1 parent 45bc838 commit b258666

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

serde/src/private/ser.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,14 @@ where
150150
Err(self.bad_type(Unsupported::Integer))
151151
}
152152

153+
fn serialize_i128(self, _: i128) -> Result<Self::Ok, Self::Error> {
154+
Err(self.bad_type(Unsupported::Integer))
155+
}
156+
157+
fn serialize_u128(self, _: u128) -> Result<Self::Ok, Self::Error> {
158+
Err(self.bad_type(Unsupported::Integer))
159+
}
160+
153161
fn serialize_f32(self, _: f32) -> Result<Self::Ok, Self::Error> {
154162
Err(self.bad_type(Unsupported::Float))
155163
}
@@ -428,11 +436,13 @@ mod content {
428436
U16(u16),
429437
U32(u32),
430438
U64(u64),
439+
U128(u128),
431440

432441
I8(i8),
433442
I16(i16),
434443
I32(i32),
435444
I64(i64),
445+
I128(i128),
436446

437447
F32(f32),
438448
F64(f64),
@@ -475,10 +485,12 @@ mod content {
475485
Content::U16(u) => serializer.serialize_u16(u),
476486
Content::U32(u) => serializer.serialize_u32(u),
477487
Content::U64(u) => serializer.serialize_u64(u),
488+
Content::U128(i) => serializer.serialize_u128(i),
478489
Content::I8(i) => serializer.serialize_i8(i),
479490
Content::I16(i) => serializer.serialize_i16(i),
480491
Content::I32(i) => serializer.serialize_i32(i),
481492
Content::I64(i) => serializer.serialize_i64(i),
493+
Content::I128(i) => serializer.serialize_i128(i),
482494
Content::F32(f) => serializer.serialize_f32(f),
483495
Content::F64(f) => serializer.serialize_f64(f),
484496
Content::Char(c) => serializer.serialize_char(c),
@@ -607,6 +619,14 @@ mod content {
607619
Ok(Content::U64(v))
608620
}
609621

622+
fn serialize_i128(self, v: i128) -> Result<Content, E> {
623+
Ok(Content::I128(v))
624+
}
625+
626+
fn serialize_u128(self, v: u128) -> Result<Content, E> {
627+
Ok(Content::U128(v))
628+
}
629+
610630
fn serialize_f32(self, v: f32) -> Result<Content, E> {
611631
Ok(Content::F32(v))
612632
}
@@ -1056,6 +1076,14 @@ where
10561076
Err(Self::bad_type(Unsupported::Integer))
10571077
}
10581078

1079+
fn serialize_i128(self, _: i128) -> Result<Self::Ok, Self::Error> {
1080+
Err(Self::bad_type(Unsupported::Integer))
1081+
}
1082+
1083+
fn serialize_u128(self, _: u128) -> Result<Self::Ok, Self::Error> {
1084+
Err(Self::bad_type(Unsupported::Integer))
1085+
}
1086+
10591087
fn serialize_f32(self, _: f32) -> Result<Self::Ok, Self::Error> {
10601088
Err(Self::bad_type(Unsupported::Float))
10611089
}

0 commit comments

Comments
 (0)