qubit_json/decode/
json_syntax_error_reason.rs1use std::fmt;
11
12use crate::lexical::JsonLexicalErrorReason;
13
14#[derive(Clone, Copy, Debug, Eq, PartialEq)]
29pub enum JsonSyntaxErrorReason {
30 UnexpectedEnd,
32 UnexpectedByte,
37 ExpectedColon,
39 ExpectedCommaOrArrayEnd,
41 ExpectedCommaOrObjectEnd,
43 ExpectedObjectKey,
45 InvalidEscape,
47 InvalidUnicodeEscape,
49 UnpairedSurrogate,
51 InvalidUtf8,
53 InvalidNumber,
55 IntegerOutOfRange,
57 FloatOutOfRange,
59 TrailingCharacters,
61 NestingOverflow,
63}
64
65impl From<JsonLexicalErrorReason> for JsonSyntaxErrorReason {
66 #[inline]
68 fn from(reason: JsonLexicalErrorReason) -> Self {
69 match reason {
70 JsonLexicalErrorReason::UnexpectedEnd => Self::UnexpectedEnd,
71 JsonLexicalErrorReason::UnexpectedByte => Self::UnexpectedByte,
72 JsonLexicalErrorReason::ExpectedColon => Self::ExpectedColon,
73 JsonLexicalErrorReason::ExpectedCommaOrArrayEnd => Self::ExpectedCommaOrArrayEnd,
74 JsonLexicalErrorReason::ExpectedCommaOrObjectEnd => Self::ExpectedCommaOrObjectEnd,
75 JsonLexicalErrorReason::ExpectedObjectKey => Self::ExpectedObjectKey,
76 JsonLexicalErrorReason::InvalidEscape => Self::InvalidEscape,
77 JsonLexicalErrorReason::InvalidUnicodeEscape => Self::InvalidUnicodeEscape,
78 JsonLexicalErrorReason::UnpairedSurrogate => Self::UnpairedSurrogate,
79 JsonLexicalErrorReason::InvalidUtf8 => Self::InvalidUtf8,
80 JsonLexicalErrorReason::InvalidNumber => Self::InvalidNumber,
81 JsonLexicalErrorReason::IntegerOutOfRange => Self::IntegerOutOfRange,
82 JsonLexicalErrorReason::FloatOutOfRange => Self::FloatOutOfRange,
83 JsonLexicalErrorReason::TrailingCharacters => Self::TrailingCharacters,
84 JsonLexicalErrorReason::NestingOverflow => Self::NestingOverflow,
85 }
86 }
87}
88
89impl fmt::Display for JsonSyntaxErrorReason {
90 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
92 match self {
93 Self::UnexpectedEnd => formatter.write_str("unexpected end of input"),
94 Self::UnexpectedByte => formatter.write_str("unexpected byte"),
95 Self::ExpectedColon => formatter.write_str("expected ':'"),
96 Self::ExpectedCommaOrArrayEnd => formatter.write_str("expected ',' or ']' in array"),
97 Self::ExpectedCommaOrObjectEnd => formatter.write_str("expected ',' or '}' in object"),
98 Self::ExpectedObjectKey => formatter.write_str("expected object key"),
99 Self::InvalidEscape => formatter.write_str("invalid string escape"),
100 Self::InvalidUnicodeEscape => formatter.write_str("invalid Unicode escape"),
101 Self::UnpairedSurrogate => formatter.write_str("unpaired Unicode surrogate"),
102 Self::InvalidUtf8 => formatter.write_str("invalid UTF-8"),
103 Self::InvalidNumber => formatter.write_str("invalid JSON number"),
104 Self::IntegerOutOfRange => formatter.write_str("JSON integer is outside the supported 64-bit range"),
105 Self::FloatOutOfRange => formatter.write_str("JSON number is outside the finite f64 range"),
106 Self::TrailingCharacters => formatter.write_str("trailing characters"),
107 Self::NestingOverflow => formatter.write_str("JSON nesting overflow"),
108 }
109 }
110}