Skip to content

Commit 5bf9f35

Browse files
committed
Forward deserialize integer methods to deserialize_any
- Remove unnecessary code duplication - Even though the hint is for an integer, the code invoked is the same
1 parent 6d62f12 commit 5bf9f35

File tree

1 file changed

+1
-64
lines changed

1 file changed

+1
-64
lines changed

src/de.rs

Lines changed: 1 addition & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -263,30 +263,6 @@ impl<'a> Deserializer<read::SliceRead<'a>> {
263263
}
264264
}
265265

266-
macro_rules! forward_deserialize_signed_integer {
267-
($method:ident) => {
268-
#[inline]
269-
fn $method<V>(self, visitor: V) -> Result<V::Value>
270-
where
271-
V: de::Visitor<'de>,
272-
{
273-
self.deserialize_i64(visitor)
274-
}
275-
};
276-
}
277-
278-
macro_rules! forward_deserialize_unsigned_integer {
279-
($method:ident) => {
280-
#[inline]
281-
fn $method<V>(self, visitor: V) -> Result<V::Value>
282-
where
283-
V: de::Visitor<'de>,
284-
{
285-
self.deserialize_u64(visitor)
286-
}
287-
};
288-
}
289-
290266
impl<'de, R: Read<'de>> de::Deserializer<'de> for &mut Deserializer<R> {
291267
type Error = Error;
292268

@@ -340,52 +316,13 @@ impl<'de, R: Read<'de>> de::Deserializer<'de> for &mut Deserializer<R> {
340316
}
341317

342318
forward_to_deserialize_any! {
343-
bool f32 f64 unit unit_struct
319+
bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 unit unit_struct
344320

345321
char str string
346322

347323
struct enum identifier ignored_any
348324
}
349325

350-
forward_deserialize_signed_integer!(deserialize_i8);
351-
forward_deserialize_signed_integer!(deserialize_i16);
352-
forward_deserialize_signed_integer!(deserialize_i32);
353-
354-
fn deserialize_i64<V>(self, visitor: V) -> Result<V::Value>
355-
where
356-
V: de::Visitor<'de>,
357-
{
358-
match self.parse_peek()? {
359-
b'i' => {
360-
self.parse_next()?;
361-
362-
let (is_positive, num) = self.parse_integer()?;
363-
if is_positive {
364-
visitor.visit_u64(num)
365-
} else {
366-
use core::convert::TryFrom;
367-
368-
visitor.visit_i64(-i64::try_from(num).map_err(|_| {
369-
Error::new(ErrorKind::InvalidInteger, self.read.byte_offset())
370-
})?)
371-
}
372-
}
373-
_ => Err(self.unexpected_type_err(&visitor)?),
374-
}
375-
}
376-
377-
forward_deserialize_unsigned_integer!(deserialize_u8);
378-
forward_deserialize_unsigned_integer!(deserialize_u16);
379-
forward_deserialize_unsigned_integer!(deserialize_u32);
380-
381-
fn deserialize_u64<V>(self, visitor: V) -> Result<V::Value>
382-
where
383-
V: de::Visitor<'de>,
384-
{
385-
// The implementation should be the same as i64 for this data model
386-
self.deserialize_i64(visitor)
387-
}
388-
389326
fn deserialize_bytes<V>(self, visitor: V) -> Result<V::Value>
390327
where
391328
V: de::Visitor<'de>,

0 commit comments

Comments
 (0)