Skip to content

Commit 3c23203

Browse files
committed
Implement IntoDeserializer for ListIter
1 parent ea22770 commit 3c23203

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/de/simple_type.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,14 @@ impl<'de, 'a> SeqAccess<'de> for ListIter<'de, 'a> {
449449
Ok(None)
450450
}
451451
}
452+
impl<'de, 'a> IntoDeserializer<'de, DeError> for ListIter<'de, 'a> {
453+
/// serde<=1.0.213 does not implement `IntoDeserializer` for `SeqAccessDeserializer`
454+
type Deserializer = SeqAccessDeserializer<Self>;
455+
456+
fn into_deserializer(self) -> Self::Deserializer {
457+
SeqAccessDeserializer::new(self)
458+
}
459+
}
452460

453461
////////////////////////////////////////////////////////////////////////////////////////////////////
454462

@@ -759,7 +767,7 @@ impl<'de, 'a> Deserializer<'de> for SimpleTypeDeserializer<'de, 'a> {
759767

760768
fn deserialize_struct<V>(
761769
self,
762-
name: &'static str,
770+
_name: &'static str,
763771
fields: &'static [&'static str],
764772
visitor: V,
765773
) -> Result<V::Value, Self::Error>
@@ -777,9 +785,8 @@ impl<'de, 'a> Deserializer<'de> for SimpleTypeDeserializer<'de, 'a> {
777785
escaped: self.escaped,
778786
};
779787

780-
let seq_deserializer = SeqAccessDeserializer::new(list_iter);
781-
let der = MapDeserializer::new(std::iter::once((TEXT_KEY, seq_deserializer)));
782-
return der.deserialize_map(visitor);
788+
let der = MapDeserializer::new(std::iter::once((TEXT_KEY, list_iter)));
789+
return visitor.visit_map(der);
783790
}
784791
self.deserialize_str(visitor)
785792
}

0 commit comments

Comments
 (0)