use std::fmt::{Display, Formatter};
use super::TemplateResolutionError;
use crate::TemplateResourceError;
#[derive(Debug)]
pub enum TemplateResolverError {
InvalidArgument(String),
Resource(TemplateResourceError),
Resolution(TemplateResolutionError),
}
impl Display for TemplateResolverError {
fn fmt(&self, formatter: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Self::InvalidArgument(message) => formatter.write_str(message),
Self::Resource(error) => Display::fmt(error, formatter),
Self::Resolution(error) => Display::fmt(error, formatter),
}
}
}
impl std::error::Error for TemplateResolverError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
Self::InvalidArgument(_) => None,
Self::Resource(error) => Some(error),
Self::Resolution(error) => Some(error),
}
}
}
impl From<TemplateResourceError> for TemplateResolverError {
fn from(error: TemplateResourceError) -> Self {
Self::Resource(error)
}
}
impl From<TemplateResolutionError> for TemplateResolverError {
fn from(error: TemplateResolutionError) -> Self {
Self::Resolution(error)
}
}