@@ -1930,30 +1930,26 @@ impl<'de, 'a, R: Read<'de> + 'a> de::SeqAccess<'de> for SeqAccess<'a, R> {
1930
1930
seq : & mut SeqAccess < ' a , R > ,
1931
1931
) -> Result < bool > {
1932
1932
let peek = match tri ! ( seq. de. parse_whitespace( ) ) {
1933
- Some ( b']' ) => {
1934
- return Ok ( false ) ;
1935
- }
1936
- Some ( b',' ) if !seq. first => {
1937
- seq. de . eat_char ( ) ;
1938
- tri ! ( seq. de. parse_whitespace( ) )
1939
- }
1940
- Some ( b) => {
1941
- if seq. first {
1942
- seq. first = false ;
1943
- Some ( b)
1944
- } else {
1945
- return Err ( seq. de . peek_error ( ErrorCode :: ExpectedListCommaOrEnd ) ) ;
1946
- }
1947
- }
1933
+ Some ( b) => b,
1948
1934
None => {
1949
1935
return Err ( seq. de . peek_error ( ErrorCode :: EofWhileParsingList ) ) ;
1950
1936
}
1951
1937
} ;
1952
1938
1953
- match peek {
1954
- Some ( b']' ) => Err ( seq. de . peek_error ( ErrorCode :: TrailingComma ) ) ,
1955
- Some ( _) => Ok ( true ) ,
1956
- None => Err ( seq. de . peek_error ( ErrorCode :: EofWhileParsingValue ) ) ,
1939
+ if peek == b']' {
1940
+ Ok ( false )
1941
+ } else if seq. first {
1942
+ seq. first = false ;
1943
+ Ok ( true )
1944
+ } else if peek == b',' {
1945
+ seq. de . eat_char ( ) ;
1946
+ match tri ! ( seq. de. parse_whitespace( ) ) {
1947
+ Some ( b']' ) => Err ( seq. de . peek_error ( ErrorCode :: TrailingComma ) ) ,
1948
+ Some ( _) => Ok ( true ) ,
1949
+ None => Err ( seq. de . peek_error ( ErrorCode :: EofWhileParsingValue ) ) ,
1950
+ }
1951
+ } else {
1952
+ Err ( seq. de . peek_error ( ErrorCode :: ExpectedListCommaOrEnd ) )
1957
1953
}
1958
1954
}
1959
1955
@@ -1985,31 +1981,31 @@ impl<'de, 'a, R: Read<'de> + 'a> de::MapAccess<'de> for MapAccess<'a, R> {
1985
1981
{
1986
1982
fn has_next_key < ' de , ' a , R : Read < ' de > + ' a > ( map : & mut MapAccess < ' a , R > ) -> Result < bool > {
1987
1983
let peek = match tri ! ( map. de. parse_whitespace( ) ) {
1988
- Some ( b'}' ) => {
1989
- return Ok ( false ) ;
1990
- }
1991
- Some ( b',' ) if !map. first => {
1992
- map. de . eat_char ( ) ;
1993
- tri ! ( map. de. parse_whitespace( ) )
1994
- }
1995
- Some ( b) => {
1996
- if map. first {
1997
- map. first = false ;
1998
- Some ( b)
1999
- } else {
2000
- return Err ( map. de . peek_error ( ErrorCode :: ExpectedObjectCommaOrEnd ) ) ;
2001
- }
2002
- }
1984
+ Some ( b) => b,
2003
1985
None => {
2004
1986
return Err ( map. de . peek_error ( ErrorCode :: EofWhileParsingObject ) ) ;
2005
1987
}
2006
1988
} ;
2007
1989
2008
- match peek {
2009
- Some ( b'"' ) => Ok ( true ) ,
2010
- Some ( b'}' ) => Err ( map. de . peek_error ( ErrorCode :: TrailingComma ) ) ,
2011
- Some ( _) => Err ( map. de . peek_error ( ErrorCode :: KeyMustBeAString ) ) ,
2012
- None => Err ( map. de . peek_error ( ErrorCode :: EofWhileParsingValue ) ) ,
1990
+ if peek == b'}' {
1991
+ Ok ( false )
1992
+ } else if map. first {
1993
+ map. first = false ;
1994
+ if peek == b'"' {
1995
+ Ok ( true )
1996
+ } else {
1997
+ Err ( map. de . peek_error ( ErrorCode :: KeyMustBeAString ) )
1998
+ }
1999
+ } else if peek == b',' {
2000
+ map. de . eat_char ( ) ;
2001
+ match tri ! ( map. de. parse_whitespace( ) ) {
2002
+ Some ( b'"' ) => Ok ( true ) ,
2003
+ Some ( b'}' ) => Err ( map. de . peek_error ( ErrorCode :: TrailingComma ) ) ,
2004
+ Some ( _) => Err ( map. de . peek_error ( ErrorCode :: KeyMustBeAString ) ) ,
2005
+ None => Err ( map. de . peek_error ( ErrorCode :: EofWhileParsingValue ) ) ,
2006
+ }
2007
+ } else {
2008
+ Err ( map. de . peek_error ( ErrorCode :: ExpectedObjectCommaOrEnd ) )
2013
2009
}
2014
2010
}
2015
2011
0 commit comments