mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-17 12:41:02 +00:00
Simplify pattern expecting a token
This commit is contained in:
@@ -48,16 +48,23 @@ pub trait Deserializer<E>: Iterator<Result<Token, E>> {
|
|||||||
|
|
||||||
fn syntax_error(&self) -> E;
|
fn syntax_error(&self) -> E;
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn expect_token(&mut self) -> Result<Token, E> {
|
||||||
|
match self.next() {
|
||||||
|
Some(Ok(token)) => Ok(token),
|
||||||
|
Some(Err(err)) => Err(err),
|
||||||
|
None => Err(self.end_of_stream_error()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn expect_null(&mut self, token: Token) -> Result<(), E> {
|
fn expect_null(&mut self, token: Token) -> Result<(), E> {
|
||||||
match token {
|
match token {
|
||||||
Null => Ok(()),
|
Null => Ok(()),
|
||||||
TupleStart(_) => {
|
TupleStart(_) => {
|
||||||
match self.next() {
|
match try!(self.expect_token()) {
|
||||||
Some(Ok(End)) => Ok(()),
|
End => Ok(()),
|
||||||
Some(Ok(_)) => Err(self.syntax_error()),
|
_ => Err(self.syntax_error()),
|
||||||
Some(Err(err)) => Err(err),
|
|
||||||
None => Err(self.end_of_stream_error()),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => Err(self.syntax_error()),
|
_ => Err(self.syntax_error()),
|
||||||
@@ -162,13 +169,7 @@ pub trait Deserializer<E>: Iterator<Result<Token, E>> {
|
|||||||
fn expect_struct_field<
|
fn expect_struct_field<
|
||||||
T: Deserializable<E, Self>
|
T: Deserializable<E, Self>
|
||||||
>(&mut self, name: &str) -> Result<T, E> {
|
>(&mut self, name: &str) -> Result<T, E> {
|
||||||
let token = match self.next() {
|
match try!(self.expect_token()) {
|
||||||
Some(Ok(token)) => token,
|
|
||||||
Some(Err(err)) => { return Err(err); }
|
|
||||||
None => { return Err(self.end_of_stream_error()); }
|
|
||||||
};
|
|
||||||
|
|
||||||
match token {
|
|
||||||
Str(n) => {
|
Str(n) => {
|
||||||
if name != n {
|
if name != n {
|
||||||
return Err(self.syntax_error());
|
return Err(self.syntax_error());
|
||||||
@@ -240,11 +241,9 @@ pub trait Deserializer<E>: Iterator<Result<Token, E>> {
|
|||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn expect_end(&mut self) -> Result<(), E> {
|
fn expect_end(&mut self) -> Result<(), E> {
|
||||||
match self.next() {
|
match try!(self.expect_token()) {
|
||||||
Some(Ok(End)) => Ok(()),
|
End => Ok(()),
|
||||||
Some(Ok(_)) => Err(self.syntax_error()),
|
_ => Err(self.syntax_error()),
|
||||||
Some(Err(err)) => Err(err),
|
|
||||||
None => Err(self.end_of_stream_error()),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -263,14 +262,12 @@ fn expect_rest_of_collection<
|
|||||||
let iter = d.by_ref().batch(|d| {
|
let iter = d.by_ref().batch(|d| {
|
||||||
let d = d.iter();
|
let d = d.iter();
|
||||||
|
|
||||||
match d.next() {
|
match try!(d.expect_token()) {
|
||||||
Some(Ok(End)) => None,
|
End => None,
|
||||||
Some(Ok(token)) => {
|
token => {
|
||||||
let value: Result<T, E> = Deserializable::deserialize_token(d, token);
|
let value: Result<T, E> = Deserializable::deserialize_token(d, token);
|
||||||
Some(value)
|
Some(value)
|
||||||
}
|
}
|
||||||
Some(Err(e)) => Some(Err(e)),
|
|
||||||
None => Some(Err(d.end_of_stream_error())),
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user