use std::fmt;
#[doc(inline)]
pub use crate::text::parse::{EscapedPestError, RawPestError};
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Error {
EscapedParseError(EscapedPestError),
RawParseError(RawPestError),
RenderError(fmt::Error),
RawRenderError { invalid_char: char },
}
impl From<EscapedPestError> for Error {
fn from(e: EscapedPestError) -> Self {
Self::EscapedParseError(e)
}
}
impl From<RawPestError> for Error {
fn from(e: RawPestError) -> Self {
Self::RawParseError(e)
}
}
impl From<std::fmt::Error> for Error {
fn from(e: std::fmt::Error) -> Self {
Self::RenderError(e)
}
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::EscapedParseError(e) => write!(f, "Failed parsing input Error: {e}"),
Self::RawParseError(e) => write!(f, "Failed parsing input Error: {e}"),
Self::RenderError(e) => write!(f, "Failed rendering input Error: {e}"),
Self::RawRenderError { invalid_char } => write!(
f,
"Encountered invalid character in raw string: {invalid_char:?}"
),
}
}
}
impl std::error::Error for Error {}