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