1use std::fmt;
6
7#[derive(Debug, Clone)]
9pub enum TemplateError {
10 RenderError(String),
12 ConfigError(String),
14 IoError(String),
16 ValidationError(String),
18 InternalError(String),
20}
21
22impl fmt::Display for TemplateError {
23 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24 match self {
25 TemplateError::RenderError(msg) => write!(f, "Template rendering error: {}", msg),
26 TemplateError::ConfigError(msg) => write!(f, "Configuration error: {}", msg),
27 TemplateError::IoError(msg) => write!(f, "I/O error: {}", msg),
28 TemplateError::ValidationError(msg) => write!(f, "Validation error: {}", msg),
29 TemplateError::InternalError(msg) => write!(f, "Internal error: {}", msg),
30 }
31 }
32}
33
34impl std::error::Error for TemplateError {}
35
36impl From<tera::Error> for TemplateError {
37 fn from(err: tera::Error) -> Self {
38 TemplateError::RenderError(err.to_string())
39 }
40}
41
42impl From<std::io::Error> for TemplateError {
43 fn from(err: std::io::Error) -> Self {
44 TemplateError::IoError(err.to_string())
45 }
46}
47
48pub type Result<T> = std::result::Result<T, TemplateError>;