Map elts shouldn't be tuples, 4267ns vs 4900ns

This commit is contained in:
Erick Tryzelaar 2014-05-26 09:01:22 -07:00
parent e4fece35ad
commit ac3136b2f3
2 changed files with 9 additions and 16 deletions

View File

@ -338,7 +338,6 @@ mod deserializer {
self.stack.push(EndState);
let len = value.len();
for (key, value) in value.move_iter() {
self.stack.push(EndState);
match value {
Some(c) => {
self.stack.push(CharState(c));
@ -349,7 +348,6 @@ mod deserializer {
}
}
self.stack.push(StringState(key));
self.stack.push(TupleState(2));
}
Some(Ok(MapStart(len)))
}

23
de.rs
View File

@ -406,7 +406,8 @@ macro_rules! deserialize_map {
match d.next() {
Some(Ok(End)) => { break; }
Some(Ok(token)) => {
let (k, v): (K, V) = try!(Deserializable::deserialize_token(d, token));
let k = try!(Deserializable::deserialize_token(d, token));
let v = try!(Deserializable::deserialize(d));
$seq.insert(k, v);
}
Some(Err(err)) => { return Err(err); }
@ -768,12 +769,10 @@ mod tests {
Str("c"),
MapStart(1),
TupleStart(2),
String("abc".to_strbuf()),
String("abc".to_strbuf()),
Option(true),
Char('c'),
End,
Option(true),
Char('c'),
End,
End,
End,
@ -889,17 +888,13 @@ mod tests {
fn test_tokens_hashmap() {
let tokens = vec!(
MapStart(2),
TupleStart(2),
Int(5),
Int(5),
String("a".to_strbuf()),
End,
String("a".to_strbuf()),
TupleStart(2),
Int(6),
Int(6),
String("b".to_strbuf()),
End,
String("b".to_strbuf()),
End,
);