diff --git a/de.rs b/de.rs index 49082635..f4797309 100644 --- a/de.rs +++ b/de.rs @@ -165,8 +165,13 @@ pub trait Deserializer: Iterator> { T: Deserializable, C: FromIterator >(&mut self) -> Result { + // By default we don't care what our source input was. We can take + // anything that's a Collection. We'll error out later if the types + // are wrong. let len = match_token! { - SeqStart(len) => len + TupleStart(len) => len, + SeqStart(len) => len, + MapStart(len) => len }; let iter = self.by_ref().batch(|d| { @@ -197,7 +202,13 @@ pub trait Deserializer: Iterator> { V: Deserializable, C: FromIterator<(K, V)> >(&mut self) -> Result { + // By default we don't care what our source input was. We can take + // anything that's a Collection<(K, V)>.We'll error out later if the types + // are wrong. + let len = match_token! { + TupleStart(len) => len, + VecStart(len) => len, MapStart(len) => len }; @@ -685,7 +696,7 @@ mod tests { TupleStart(3), Sep, Null, - + Sep, TupleStart(0), End,