1use std::error::Error;
4use std::fmt::Display;
5use std::io::Error as IoError;
6
7use tinytemplate::error::Error as TinyTemplateError;
8
9pub type Result<T> = std::result::Result<T, VisError>;
11
12#[derive(Debug)]
15pub enum VisError {
16 Io(IoError),
19
20 TemplateError(TinyTemplateError),
23}
24
25impl Error for VisError {}
26
27impl Display for VisError {
28 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
29 let vis_error = "vis error:";
30
31 match self {
32 VisError::Io(error) => write!(f, "{vis_error} I/O error: {error}"),
33 VisError::TemplateError(error) => write!(f, "{vis_error} template error: {error}"),
34 }
35 }
36}
37
38impl From<TinyTemplateError> for VisError {
39 fn from(error: TinyTemplateError) -> Self {
40 VisError::TemplateError(error)
41 }
42}
43
44impl From<IoError> for VisError {
45 fn from(error: IoError) -> Self {
46 VisError::Io(error)
47 }
48}