mirror of
https://github.com/serde-rs/serde.git
synced 2025-10-02 23:35:26 +00:00
Simpify bench_struct
This commit is contained in:
parent
73b9a8cf74
commit
be34aefe78
134
bench_struct.rs
134
bench_struct.rs
@ -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(),
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user