pulldown_html_ext/html/
error.rs

1use std::error::Error;
2use std::fmt;
3use std::io;
4
5/// Custom error type for HTML rendering operations
6#[derive(Debug)]
7pub enum HtmlError {
8    /// IO-related errors
9    Io(io::Error),
10    /// Writing-related errors
11    Write(fmt::Error),
12    /// Theme-related errors (for syntax highlighting)
13    Theme(String),
14    /// Configuration validation errors
15    Config(String),
16    /// General rendering errors
17    Render(String),
18}
19
20impl fmt::Display for HtmlError {
21    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
22        match self {
23            HtmlError::Io(err) => write!(f, "IO error: {}", err),
24            HtmlError::Write(err) => write!(f, "Write error: {}", err),
25            HtmlError::Theme(err) => write!(f, "Theme error: {}", err),
26            HtmlError::Config(err) => write!(f, "Configuration error: {}", err),
27            HtmlError::Render(err) => write!(f, "Rendering error: {}", err),
28        }
29    }
30}
31
32impl Error for HtmlError {
33    fn source(&self) -> Option<&(dyn Error + 'static)> {
34        match self {
35            HtmlError::Io(err) => Some(err),
36            HtmlError::Write(err) => Some(err),
37            _ => None,
38        }
39    }
40}
41
42impl From<io::Error> for HtmlError {
43    fn from(err: io::Error) -> Self {
44        HtmlError::Io(err)
45    }
46}
47
48impl From<fmt::Error> for HtmlError {
49    fn from(err: fmt::Error) -> Self {
50        HtmlError::Write(err)
51    }
52}