Skip to content

Commit

Permalink
Forward seq and map deserialization to deserialize_any
Browse files Browse the repository at this point in the history
- Remove duplicated code
  • Loading branch information
bluk committed Jan 1, 2025
1 parent 5bf9f35 commit d65eeb9
Showing 1 changed file with 2 additions and 55 deletions.
57 changes: 2 additions & 55 deletions src/de.rs
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,8 @@ impl<'de, R: Read<'de>> de::Deserializer<'de> for &mut Deserializer<R> {

char str string

seq tuple tuple_struct map

struct enum identifier ignored_any
}

Expand Down Expand Up @@ -398,61 +400,6 @@ impl<'de, R: Read<'de>> de::Deserializer<'de> for &mut Deserializer<R> {
visitor.visit_newtype_struct(self)
}

fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value>
where
V: de::Visitor<'de>,
{
match self.parse_peek()? {
b'l' => {
self.parse_next()?;
let ret = visitor.visit_seq(SeqAccess { de: self });
match (ret, self.on_end_seq()) {
(Ok(ret), Ok(())) => Ok(ret),
(Err(err), _) | (_, Err(err)) => Err(err),
}
}
_ => Err(self.unexpected_type_err(&visitor)?),
}
}

#[inline]
fn deserialize_tuple<V>(self, _len: usize, visitor: V) -> Result<V::Value>
where
V: de::Visitor<'de>,
{
self.deserialize_seq(visitor)
}

#[inline]
fn deserialize_tuple_struct<V>(
self,
_name: &'static str,
_len: usize,
visitor: V,
) -> Result<V::Value>
where
V: de::Visitor<'de>,
{
self.deserialize_seq(visitor)
}

fn deserialize_map<V>(self, visitor: V) -> Result<V::Value>
where
V: de::Visitor<'de>,
{
match self.parse_peek()? {
b'd' => {
self.parse_next()?;
let ret = visitor.visit_map(MapAccess { de: self });
match (ret, self.on_end_map()) {
(Ok(ret), Ok(())) => Ok(ret),
(Err(err), _) | (_, Err(err)) => Err(err),
}
}
_ => Err(self.unexpected_type_err(&visitor)?),
}
}

#[inline]
fn is_human_readable(&self) -> bool {
false
Expand Down

0 comments on commit d65eeb9

Please sign in to comment.