use core::fmt;
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub enum ParseNumberError {
UnexpectedEnd {
or_sign: bool,
},
UnexpectedEndAfterExponent {
or_sign: bool,
},
ExpectedMinusOrDigit(char),
ExpectedDigit(char),
ExpectedSignOrDigit(char),
}
impl fmt::Display for ParseNumberError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::UnexpectedEnd { or_sign: true } => {
write!(
f,
"Unexpected end of JSON number (expected minus sign or digit)!"
)
}
Self::UnexpectedEnd { or_sign: false } => {
write!(f, "Unexpected end of JSON number (expected digit)!")
}
Self::UnexpectedEndAfterExponent { or_sign: true } => {
write!(
f,
"Unexpected end of JSON number exponent (expected sign or digit)!"
)
}
Self::UnexpectedEndAfterExponent { or_sign: false } => {
write!(
f,
"Unexpected end of JSON number exponent (expected digit)!"
)
}
Self::ExpectedMinusOrDigit(c) => {
write!(
f,
"Invalid character ({c}) in JSON number (expected minus sign or digit)!"
)
}
Self::ExpectedDigit(c) => {
write!(
f,
"Invalid character ({c}) in JSON number (expected digit)!"
)
}
Self::ExpectedSignOrDigit(c) => {
write!(
f,
"Invalid character ({c}) in JSON number (expected sign or digit)!"
)
}
}
}
}
#[cfg(feature = "std")]
impl std::error::Error for ParseNumberError {}