Skip to content

Commit fcd94f0

Browse files
committed
Delete Deserializer impl from value::de::SeqDeserializer
1 parent ac9078e commit fcd94f0

File tree

1 file changed

+16
-33
lines changed

1 file changed

+16
-33
lines changed

src/value/de.rs

Lines changed: 16 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,22 @@ impl<'de> VariantAccess<'de> for VariantDeserializer {
512512
{
513513
match self.value {
514514
Some(Value::Array(v)) => {
515-
serde::Deserializer::deserialize_any(SeqDeserializer::new(v), visitor)
515+
let len = v.len();
516+
if len == 0 {
517+
visitor.visit_unit()
518+
} else {
519+
let mut seq = SeqDeserializer::new(v);
520+
let ret = tri!(visitor.visit_seq(&mut seq));
521+
let remaining = seq.iter.len();
522+
if remaining == 0 {
523+
Ok(ret)
524+
} else {
525+
Err(serde::de::Error::invalid_length(
526+
len,
527+
&"fewer elements in array",
528+
))
529+
}
530+
}
516531
}
517532
Some(other) => Err(serde::de::Error::invalid_type(
518533
other.unexpected(),
@@ -559,38 +574,6 @@ impl SeqDeserializer {
559574
}
560575
}
561576

562-
impl<'de> serde::Deserializer<'de> for SeqDeserializer {
563-
type Error = Error;
564-
565-
#[inline]
566-
fn deserialize_any<V>(mut self, visitor: V) -> Result<V::Value, Error>
567-
where
568-
V: Visitor<'de>,
569-
{
570-
let len = self.iter.len();
571-
if len == 0 {
572-
visitor.visit_unit()
573-
} else {
574-
let ret = tri!(visitor.visit_seq(&mut self));
575-
let remaining = self.iter.len();
576-
if remaining == 0 {
577-
Ok(ret)
578-
} else {
579-
Err(serde::de::Error::invalid_length(
580-
len,
581-
&"fewer elements in array",
582-
))
583-
}
584-
}
585-
}
586-
587-
forward_to_deserialize_any! {
588-
bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
589-
bytes byte_buf option unit unit_struct newtype_struct seq tuple
590-
tuple_struct map struct enum identifier ignored_any
591-
}
592-
}
593-
594577
impl<'de> SeqAccess<'de> for SeqDeserializer {
595578
type Error = Error;
596579

0 commit comments

Comments
 (0)