diff --git a/src/bench_enum.rs b/src/bench_enum.rs index c5f75a46..815bb30d 100644 --- a/src/bench_enum.rs +++ b/src/bench_enum.rs @@ -231,27 +231,27 @@ mod deserializer { impl de::Deserializer for AnimalDeserializer { #[inline] - fn end_of_stream_error(&self) -> Error { + fn end_of_stream_error(&mut self) -> Error { EndOfStream } #[inline] - fn syntax_error(&self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { + fn syntax_error(&mut self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { SyntaxError } #[inline] - fn missing_field_error(&self, _field: &'static str) -> Error { + fn missing_field_error(&mut self, _field: &'static str) -> Error { SyntaxError } #[inline] - fn unexpected_name_error(&self, _token: de::Token) -> Error { + fn unexpected_name_error(&mut self, _token: de::Token) -> Error { SyntaxError } #[inline] - fn conversion_error(&self, _token: de::Token) -> Error { + fn conversion_error(&mut self, _token: de::Token) -> Error { SyntaxError } } diff --git a/src/bench_map.rs b/src/bench_map.rs index b23fe109..0faabcde 100644 --- a/src/bench_map.rs +++ b/src/bench_map.rs @@ -227,27 +227,27 @@ mod deserializer { impl de::Deserializer for IntDeserializer { #[inline] - fn end_of_stream_error(&self) -> Error { + fn end_of_stream_error(&mut self) -> Error { EndOfStream } #[inline] - fn syntax_error(&self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { + fn syntax_error(&mut self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { SyntaxError } #[inline] - fn missing_field_error(&self, _field: &'static str) -> Error { + fn missing_field_error(&mut self, _field: &'static str) -> Error { SyntaxError } #[inline] - fn unexpected_name_error(&self, _token: de::Token) -> Error { + fn unexpected_name_error(&mut self, _token: de::Token) -> Error { SyntaxError } #[inline] - fn conversion_error(&self, _token: de::Token) -> Error { + fn conversion_error(&mut self, _token: de::Token) -> Error { SyntaxError } } diff --git a/src/bench_struct.rs b/src/bench_struct.rs index 9e5e4591..dba8d7f7 100644 --- a/src/bench_struct.rs +++ b/src/bench_struct.rs @@ -351,27 +351,27 @@ mod deserializer { impl de::Deserializer for OuterDeserializer { #[inline] - fn end_of_stream_error(&self) -> Error { + fn end_of_stream_error(&mut self) -> Error { EndOfStream } #[inline] - fn syntax_error(&self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { + fn syntax_error(&mut self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { SyntaxError } #[inline] - fn missing_field_error(&self, _field: &'static str) -> Error { + fn missing_field_error(&mut self, _field: &'static str) -> Error { SyntaxError } #[inline] - fn unexpected_name_error(&self, _token: de::Token) -> Error { + fn unexpected_name_error(&mut self, _token: de::Token) -> Error { SyntaxError } #[inline] - fn conversion_error(&self, _token: de::Token) -> Error { + fn conversion_error(&mut self, _token: de::Token) -> Error { SyntaxError } } diff --git a/src/bench_vec.rs b/src/bench_vec.rs index 6b4c3691..3ba5201f 100644 --- a/src/bench_vec.rs +++ b/src/bench_vec.rs @@ -295,27 +295,27 @@ mod deserializer { impl de::Deserializer for IntDeserializer { #[inline] - fn end_of_stream_error(&self) -> Error { + fn end_of_stream_error(&mut self) -> Error { EndOfStream } #[inline] - fn syntax_error(&self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { + fn syntax_error(&mut self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { SyntaxError } #[inline] - fn missing_field_error(&self, _field: &'static str) -> Error { + fn missing_field_error(&mut self, _field: &'static str) -> Error { SyntaxError } #[inline] - fn unexpected_name_error(&self, _token: de::Token) -> Error { + fn unexpected_name_error(&mut self, _token: de::Token) -> Error { SyntaxError } #[inline] - fn conversion_error(&self, _token: de::Token) -> Error { + fn conversion_error(&mut self, _token: de::Token) -> Error { SyntaxError } } @@ -365,27 +365,27 @@ mod deserializer { impl de::Deserializer for U8Deserializer { #[inline] - fn end_of_stream_error(&self) -> Error { + fn end_of_stream_error(&mut self) -> Error { EndOfStream } #[inline] - fn syntax_error(&self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { + fn syntax_error(&mut self, _token: de::Token, _expected: &[de::TokenKind]) -> Error { SyntaxError } #[inline] - fn missing_field_error(&self, _field: &'static str) -> Error { + fn missing_field_error(&mut self, _field: &'static str) -> Error { SyntaxError } #[inline] - fn unexpected_name_error(&self, _token: de::Token) -> Error { + fn unexpected_name_error(&mut self, _token: de::Token) -> Error { SyntaxError } #[inline] - fn conversion_error(&self, _token: de::Token) -> Error { + fn conversion_error(&mut self, _token: de::Token) -> Error { SyntaxError } } diff --git a/src/de.rs b/src/de.rs index 37ec3556..88f1df60 100644 --- a/src/de.rs +++ b/src/de.rs @@ -176,15 +176,22 @@ macro_rules! to_result { } pub trait Deserializer: Iterator> { - fn end_of_stream_error(&self) -> E; + /// Called when a `Deserializable` expected more tokens, but the + /// `Deserializer` was empty. + fn end_of_stream_error(&mut self) -> E; - fn syntax_error(&self, token: Token, expected: &[TokenKind]) -> E; + /// Called when a `Deserializer` was unable to properly parse the stream. + fn syntax_error(&mut self, token: Token, expected: &[TokenKind]) -> E; - fn unexpected_name_error(&self, token: Token) -> E; + /// Called when a named structure or enum got a name that it didn't expect. + fn unexpected_name_error(&mut self, token: Token) -> E; - fn conversion_error(&self, token: Token) -> E; + /// Called when a value was unable to be coerced into another value. + fn conversion_error(&mut self, token: Token) -> E; - fn missing_field_error(&self, field: &'static str) -> E; + /// Called when a `Deserializable` structure did not deserialize a field + /// named `field`. + fn missing_field_error(&mut self, field: &'static str) -> E; #[inline] fn expect_token(&mut self) -> Result { @@ -1132,23 +1139,23 @@ mod tests { } impl> Deserializer for TokenDeserializer { - fn end_of_stream_error(&self) -> Error { + fn end_of_stream_error(&mut self) -> Error { EndOfStream } - fn syntax_error(&self, _token: Token, _expected: &[TokenKind]) -> Error { + fn syntax_error(&mut self, _token: Token, _expected: &[TokenKind]) -> Error { SyntaxError } - fn unexpected_name_error(&self, _token: Token) -> Error { + fn unexpected_name_error(&mut self, _token: Token) -> Error { SyntaxError } - fn conversion_error(&self, _token: Token) -> Error { + fn conversion_error(&mut self, _token: Token) -> Error { SyntaxError } - fn missing_field_error(&self, _field: &'static str) -> Error { + fn missing_field_error(&mut self, _field: &'static str) -> Error { IncompleteValue } } diff --git a/src/json/mod.rs b/src/json/mod.rs index 1a47ab6c..4db5fd15 100644 --- a/src/json/mod.rs +++ b/src/json/mod.rs @@ -647,23 +647,23 @@ impl Iterator> for JsonDeserializer { } impl de::Deserializer for JsonDeserializer { - fn end_of_stream_error(&self) -> ParserError { + fn end_of_stream_error(&mut self) -> ParserError { SyntaxError(EOFWhileParsingValue, 0, 0) } - fn syntax_error(&self, _token: de::Token, _expected: &[de::TokenKind]) -> ParserError { + fn syntax_error(&mut self, _token: de::Token, _expected: &[de::TokenKind]) -> ParserError { SyntaxError(InvalidSyntax, 0, 0) } - fn unexpected_name_error(&self, _token: de::Token) -> ParserError { + fn unexpected_name_error(&mut self, _token: de::Token) -> ParserError { SyntaxError(InvalidSyntax, 0, 0) } - fn conversion_error(&self, _token: de::Token) -> ParserError { + fn conversion_error(&mut self, _token: de::Token) -> ParserError { SyntaxError(InvalidSyntax, 0, 0) } - fn missing_field_error(&self, field: &'static str) -> ParserError { + fn missing_field_error(&mut self, field: &'static str) -> ParserError { SyntaxError(MissingField(field), 0, 0) } @@ -2023,23 +2023,23 @@ impl> Parser { } impl> de::Deserializer for Parser { - fn end_of_stream_error(&self) -> ParserError { + fn end_of_stream_error(&mut self) -> ParserError { SyntaxError(EOFWhileParsingValue, self.line, self.col) } - fn syntax_error(&self, _token: de::Token, _expected: &[de::TokenKind]) -> ParserError { + fn syntax_error(&mut self, _token: de::Token, _expected: &[de::TokenKind]) -> ParserError { SyntaxError(InvalidSyntax, self.line, self.col) } - fn unexpected_name_error(&self, _token: de::Token) -> ParserError { + fn unexpected_name_error(&mut self, _token: de::Token) -> ParserError { SyntaxError(InvalidSyntax, self.line, self.col) } - fn conversion_error(&self, _token: de::Token) -> ParserError { + fn conversion_error(&mut self, _token: de::Token) -> ParserError { SyntaxError(InvalidSyntax, self.line, self.col) } - fn missing_field_error(&self, field: &'static str) -> ParserError { + fn missing_field_error(&mut self, field: &'static str) -> ParserError { SyntaxError(MissingField(field), self.line, self.col) }