use std::fmt::{Display, Formatter};
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum Error {
ParseError(String),
InvalidAst(String),
InvalidAstWithDebug(String, String),
InvalidJson(String),
}
impl Display for Error {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Error::ParseError(value) => write!(f, "Parse Error: {}", value),
Error::InvalidAst(value) => write!(f, "Invalid AST: {}", value),
Error::InvalidAstWithDebug(value, debug) => {
write!(f, "Invalid AST: {}. Debug: {}", value, debug)
}
Error::InvalidJson(value) => write!(f, "Invalid JSON: {}", value),
}
}
}
impl std::error::Error for Error {}
pub type Result<T> = core::result::Result<T, Error>;