Skip to content

Commit 0593ae2

Browse files
committed
fix: Add missing support for 128-bit integers
1 parent bc93b15 commit 0593ae2

3 files changed

Lines changed: 22 additions & 4 deletions

File tree

src/de.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ impl<'de> de::Deserializer<'de> for Value {
8585
visitor.visit_i64(num)
8686
}
8787

88+
#[inline]
89+
fn deserialize_i128<V: de::Visitor<'de>>(self, visitor: V) -> Result<V::Value> {
90+
visitor.visit_i128(self.into_int128()?)
91+
}
92+
8893
#[inline]
8994
fn deserialize_u8<V: de::Visitor<'de>>(self, visitor: V) -> Result<V::Value> {
9095
let num = try_convert_number!(unsigned, self, "8");
@@ -109,6 +114,11 @@ impl<'de> de::Deserializer<'de> for Value {
109114
visitor.visit_u64(num)
110115
}
111116

117+
#[inline]
118+
fn deserialize_u128<V: de::Visitor<'de>>(self, visitor: V) -> Result<V::Value> {
119+
visitor.visit_u128(self.into_uint128()?)
120+
}
121+
112122
#[inline]
113123
fn deserialize_f32<V: de::Visitor<'de>>(self, visitor: V) -> Result<V::Value> {
114124
visitor.visit_f32(self.into_float()? as f32)

src/ser.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ impl<'a> ser::Serializer for &'a mut ConfigSerializer {
108108
self.serialize_primitive(v)
109109
}
110110

111+
fn serialize_i128(self, v: i128) -> Result<Self::Ok> {
112+
self.serialize_primitive(v)
113+
}
114+
111115
fn serialize_u8(self, v: u8) -> Result<Self::Ok> {
112116
self.serialize_u64(v.into())
113117
}
@@ -124,6 +128,10 @@ impl<'a> ser::Serializer for &'a mut ConfigSerializer {
124128
self.serialize_primitive(v)
125129
}
126130

131+
fn serialize_u128(self, v: u128) -> Result<Self::Ok> {
132+
self.serialize_primitive(v)
133+
}
134+
127135
fn serialize_f32(self, v: f32) -> Result<Self::Ok> {
128136
self.serialize_f64(v.into())
129137
}

src/value.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -276,21 +276,21 @@ impl Value {
276276
ConfigError::invalid_type(
277277
self.origin,
278278
Unexpected::I128(value),
279-
"an signed 64 bit or less integer",
279+
"a signed 64 bit or less integer",
280280
)
281281
}),
282282
ValueKind::U64(value) => value.try_into().map_err(|_| {
283283
ConfigError::invalid_type(
284284
self.origin,
285285
Unexpected::U64(value),
286-
"an signed 64 bit or less integer",
286+
"a signed 64 bit or less integer",
287287
)
288288
}),
289289
ValueKind::U128(value) => value.try_into().map_err(|_| {
290290
ConfigError::invalid_type(
291291
self.origin,
292292
Unexpected::U128(value),
293-
"an signed 64 bit or less integer",
293+
"a signed 64 bit or less integer",
294294
)
295295
}),
296296

@@ -343,7 +343,7 @@ impl Value {
343343
ConfigError::invalid_type(
344344
self.origin,
345345
Unexpected::U128(value),
346-
"an signed 128 bit integer",
346+
"a signed 128 bit integer",
347347
)
348348
}),
349349

0 commit comments

Comments
 (0)