#![feature(let_chains)]
#![warn(missing_docs)]
#![warn(rust_2018_idioms)]
#![warn(rust_2021_compatibility)]
#![warn(missing_debug_implementations)]
#![warn(clippy::missing_docs_in_private_items)]
#![warn(rustdoc::broken_intra_doc_links)]
use pest::RuleType;
pub mod core;
pub mod v1;
mod version;
pub use version::Version;
#[derive(Debug)]
pub enum Error<R: RuleType> {
Lint(Box<dyn std::error::Error>),
Parse(Box<pest::error::Error<R>>),
Validation(Box<core::validation::Error>),
}
impl<R: RuleType> std::fmt::Display for Error<R> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Error::Lint(err) => {
write!(f, "lint error: {err}")
}
Error::Parse(err) => write!(f, "parse error:\n\n{err}"),
Error::Validation(err) => write!(f, "validation error: {err}"),
}
}
}
impl<R: RuleType> std::error::Error for Error<R> {}
pub type Result<T, R> = std::result::Result<T, Error<R>>;