Simpify bench_struct

This commit is contained in:
Erick Tryzelaar 2014-06-23 11:44:11 -04:00
parent 73b9a8cf74
commit be34aefe78

View File

@ -22,16 +22,26 @@ impl Deserializable for Inner {
E
>(d: &mut D, token: Token) -> Result<Inner, E> {
match token {
de::StructStart("Inner", _) |
de::MapStart(_) => {
de::StructStart("Inner", _) | de::MapStart(_) => { }
_ => { return d.syntax_error(); }
}
let mut a = None;
let mut b = None;
let mut c = None;
loop {
match try!(d.expect_token()) {
let token = match try!(d.expect_token()) {
de::End => { break; }
de::Str(name) => {
token => token,
};
let name = match token {
de::Str(name) => name,
de::String(ref name) => name.as_slice(),
_ => { return d.syntax_error(); }
};
match name {
"a" => {
a = Some(try!(de::Deserializable::deserialize(d)));
@ -45,23 +55,6 @@ impl Deserializable for Inner {
_ => { }
}
}
de::String(ref name) => {
match name.as_slice() {
"a" => {
a = Some(try!(de::Deserializable::deserialize(d)));
}
"b" => {
b = Some(try!(de::Deserializable::deserialize(d)));
}
"c" => {
c = Some(try!(de::Deserializable::deserialize(d)));
}
_ => { }
}
}
_ => { return d.syntax_error(); }
}
}
match (a, b, c) {
(Some(a), Some(b), Some(c)) => {
@ -70,9 +63,6 @@ impl Deserializable for Inner {
_ => d.syntax_error(),
}
}
_ => d.syntax_error(),
}
}
}
//////////////////////////////////////////////////////////////////////////////
@ -89,14 +79,24 @@ impl Deserializable for Outer {
E
>(d: &mut D, token: Token) -> Result<Outer, E> {
match token {
de::StructStart("Outer", _) |
de::MapStart(_) => {
de::StructStart("Outer", _) | de::MapStart(_) => { }
_ => { return d.syntax_error(); }
}
let mut inner = None;
loop {
match try!(d.expect_token()) {
let token = match try!(d.expect_token()) {
de::End => { break; }
de::Str(name) => {
token => token,
};
let name = match token {
de::Str(name) => name,
de::String(ref name) => name.as_slice(),
_ => { return d.syntax_error(); }
};
match name {
"inner" => {
inner = Some(try!(de::Deserializable::deserialize(d)));
@ -104,17 +104,6 @@ impl Deserializable for Outer {
_ => { }
}
}
de::String(ref name) => {
match name.as_slice() {
"inner" => {
inner = Some(try!(de::Deserializable::deserialize(d)));
}
_ => { }
}
}
_ => { return d.syntax_error(); }
}
}
match inner {
Some(inner) => {
@ -123,9 +112,6 @@ impl Deserializable for Outer {
_ => d.syntax_error(),
}
}
_ => d.syntax_error(),
}
}
}
//////////////////////////////////////////////////////////////////////////////