use crate::Error;
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum DialectErrorKind {
NoMatch,
Tie,
Unknown,
}
#[derive(Debug)]
#[non_exhaustive]
pub struct DialectError {
inner: Error,
}
impl DialectError {
#[must_use]
pub fn kind(&self) -> DialectErrorKind {
match &self.inner {
Error::DialectTie { .. } => DialectErrorKind::Tie,
Error::UnknownDialect(_) => DialectErrorKind::Unknown,
_ => DialectErrorKind::NoMatch,
}
}
}
impl std::fmt::Display for DialectError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.inner)
}
}
impl std::error::Error for DialectError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
std::error::Error::source(&self.inner)
}
}
impl From<Error> for DialectError {
fn from(inner: Error) -> Self {
DialectError { inner }
}
}
impl From<DialectError> for Error {
fn from(error: DialectError) -> Self {
error.inner
}
}