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,53 +22,43 @@ impl Deserializable for Inner {
E E
>(d: &mut D, token: Token) -> Result<Inner, E> { >(d: &mut D, token: Token) -> Result<Inner, E> {
match token { match token {
de::StructStart("Inner", _) | de::StructStart("Inner", _) | de::MapStart(_) => { }
de::MapStart(_) => { _ => { return d.syntax_error(); }
let mut a = None; }
let mut b = None;
let mut c = None;
loop { let mut a = None;
match try!(d.expect_token()) { let mut b = None;
de::End => { break; } let mut c = None;
de::Str(name) => {
match name {
"a" => {
a = Some(try!(de::Deserializable::deserialize(d)));
}
"b" => {
b = Some(try!(de::Deserializable::deserialize(d)));
}
"c" => {
c = Some(try!(de::Deserializable::deserialize(d)));
}
_ => { }
}
}
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) { loop {
(Some(a), Some(b), Some(c)) => { let token = match try!(d.expect_token()) {
Ok(Inner { a: a, b: b, c: c }) de::End => { break; }
} token => token,
_ => d.syntax_error(), };
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)));
} }
"b" => {
b = Some(try!(de::Deserializable::deserialize(d)));
}
"c" => {
c = Some(try!(de::Deserializable::deserialize(d)));
}
_ => { }
}
}
match (a, b, c) {
(Some(a), Some(b), Some(c)) => {
Ok(Inner { a: a, b: b, c: c })
} }
_ => d.syntax_error(), _ => d.syntax_error(),
} }
@ -89,39 +79,35 @@ impl Deserializable for Outer {
E E
>(d: &mut D, token: Token) -> Result<Outer, E> { >(d: &mut D, token: Token) -> Result<Outer, E> {
match token { match token {
de::StructStart("Outer", _) | de::StructStart("Outer", _) | de::MapStart(_) => { }
de::MapStart(_) => { _ => { return d.syntax_error(); }
let mut inner = None; }
loop { let mut inner = None;
match try!(d.expect_token()) {
de::End => { break; }
de::Str(name) => {
match name {
"inner" => {
inner = Some(try!(de::Deserializable::deserialize(d)));
}
_ => { }
}
}
de::String(ref name) => {
match name.as_slice() {
"inner" => {
inner = Some(try!(de::Deserializable::deserialize(d)));
}
_ => { }
}
}
_ => { return d.syntax_error(); }
}
}
match inner { loop {
Some(inner) => { let token = match try!(d.expect_token()) {
Ok(Outer { inner: inner }) de::End => { break; }
} token => token,
_ => d.syntax_error(), };
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)));
} }
_ => { }
}
}
match inner {
Some(inner) => {
Ok(Outer { inner: inner })
} }
_ => d.syntax_error(), _ => d.syntax_error(),
} }