clnrm_template/
error.rs

1//! Template error types for clnrm-template
2//!
3//! Provides structured error handling for template rendering operations.
4
5use std::fmt;
6
7/// Template rendering errors
8#[derive(Debug, Clone)]
9pub enum TemplateError {
10    /// Template rendering failed
11    RenderError(String),
12    /// Configuration error
13    ConfigError(String),
14    /// I/O error
15    IoError(String),
16    /// Validation error
17    ValidationError(String),
18    /// Internal error
19    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
48/// Result type for template operations
49pub type Result<T> = std::result::Result<T, TemplateError>;