oneline_template/template/template/
template_error.rs1use crate::function_executor::FunctionError;
2use std::error::Error;
3use std::fmt;
4use std::string::FromUtf8Error;
5
6#[derive(Debug)]
8pub enum TemplateError {
9 PathNotFound(String),
11 PathContainsSeq(String),
13 PathContainsMap(String),
15 PathContainsUnknownType(String),
17 PathContainsUnknownErrorType(String),
19 FunctionNotFound(String),
21 FunctionError(FunctionError),
23 SerializationError,
25 UnableConvertBoolToString,
27 UnableConvertOptionToString,
29 UnableConvertFloatToString,
31 VecToUtf8ConvertationError(FromUtf8Error),
33}
34
35impl From<FunctionError> for TemplateError {
36 fn from(error: FunctionError) -> Self {
37 return TemplateError::FunctionError(error);
38 }
39}
40
41impl fmt::Display for TemplateError {
42 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
43 match self {
44 TemplateError::PathNotFound(ref path) => {
45 write!(f, "Path not found: `{}`", path)
46 },
47 TemplateError::PathContainsSeq(ref path) => {
48 write!(f, "Path `{}` contains sequence", path)
49 },
50 TemplateError::PathContainsMap(ref path) => {
51 write!(f, "Path `{}` contains map", path)
52 },
53 TemplateError::PathContainsUnknownType(ref path) => {
54 write!(f, "Path `{}` contains unknown type", path)
55 },
56 TemplateError::PathContainsUnknownErrorType(ref path) => {
57 write!(f, "Path `{}` contains unknown error type", path)
58 },
59 TemplateError::FunctionNotFound(ref function_name) => {
60 write!(f, "Function `{}` not found", function_name)
61 },
62 TemplateError::FunctionError(ref error) => {
63 write!(f, "{}", error)
64 },
65 TemplateError::SerializationError => {
66 write!(f, "Error while serialization")
67 },
68 TemplateError::UnableConvertBoolToString => {
69 write!(f, "Convertation bool to string is not supported")
70 },
71 TemplateError::UnableConvertOptionToString => {
72 write!(f, "Convertation option to string is not supported")
73 },
74 TemplateError::UnableConvertFloatToString => {
75 write!(f, "Convertation float to string is not supported")
76 },
77 TemplateError::VecToUtf8ConvertationError(ref error) => {
78 write!(f, "Error while converting vec to string: {}", error)
79 },
80 }
81 }
82}
83
84impl Error for TemplateError {
85 fn source(&self) -> Option<&(dyn Error + 'static)> {
86 match self {
87 TemplateError::PathNotFound(..) => {
88 return None;
89 },
90 TemplateError::PathContainsSeq(..) => {
91 return None;
92 },
93 TemplateError::PathContainsMap(..) => {
94 return None;
95 },
96 TemplateError::PathContainsUnknownType(..) => {
97 return None;
98 },
99 TemplateError::PathContainsUnknownErrorType(..) => {
100 return None;
101 },
102 TemplateError::FunctionNotFound(..) => {
103 return None;
104 },
105 TemplateError::FunctionError(..) => {
106 return None;
107 },
108 TemplateError::SerializationError => {
109 return None;
110 },
111 TemplateError::UnableConvertBoolToString => {
112 return None;
113 },
114 TemplateError::UnableConvertOptionToString => {
115 return None;
116 },
117 TemplateError::UnableConvertFloatToString => {
118 return None;
119 },
120 TemplateError::VecToUtf8ConvertationError(ref error) => {
121 return Some(error);
122 },
123 }
124 }
125}