use std::fmt;
use std::str::FromStr;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum JsonDecodeErrorKind {
Budget,
EmptyInput,
InvalidUtf8,
InvalidJson,
UnexpectedTopLevel,
Deserialize,
}
impl fmt::Display for JsonDecodeErrorKind {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
formatter.write_str(match self {
Self::Budget => "budget",
Self::EmptyInput => "empty_input",
Self::InvalidUtf8 => "invalid_utf8",
Self::InvalidJson => "invalid_json",
Self::UnexpectedTopLevel => "unexpected_top_level",
Self::Deserialize => "deserialize",
})
}
}
impl FromStr for JsonDecodeErrorKind {
type Err = &'static str;
fn from_str(value: &str) -> Result<Self, Self::Err> {
if value.eq_ignore_ascii_case("budget") {
Ok(Self::Budget)
} else if value.eq_ignore_ascii_case("empty_input") {
Ok(Self::EmptyInput)
} else if value.eq_ignore_ascii_case("invalid_utf8") {
Ok(Self::InvalidUtf8)
} else if value.eq_ignore_ascii_case("invalid_json") {
Ok(Self::InvalidJson)
} else if value.eq_ignore_ascii_case("unexpected_top_level") {
Ok(Self::UnexpectedTopLevel)
} else if value.eq_ignore_ascii_case("deserialize") {
Ok(Self::Deserialize)
} else {
Err("unknown JsonDecodeErrorKind")
}
}
}