use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Error {
MissingKey(String),
NotASingleton,
NotAList,
NotAMap,
ValueError(String),
ParseError(String),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::MissingKey(key) => write!(f, "key not found: {}", key),
Error::NotASingleton => write!(f, "expected a singleton value"),
Error::NotAList => write!(f, "expected a list"),
Error::NotAMap => write!(f, "expected a map/object"),
Error::ValueError(msg) => write!(f, "value error: {}", msg),
Error::ParseError(msg) => write!(f, "parse error: {}", msg),
}
}
}
impl std::error::Error for Error {}
pub type Result<T> = std::result::Result<T, Error>;