anathema_runtime/
error.rs

1use std::error::Error as StdError;
2use std::fmt::{self, Display};
3
4use anathema_templates::error::Error as TemplateError;
5
6pub type Result<T> = std::result::Result<T, Error>;
7
8#[derive(Debug)]
9pub enum Error {
10    Template(TemplateError),
11    Widget(anathema_widgets::error::Error),
12    Notify(notify::Error),
13    Stop,
14    Reload,
15    InvalidComponentName,
16    Resolver(anathema_value_resolver::Error),
17}
18
19impl Display for Error {
20    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21        match self {
22            Self::Template(template) => write!(f, "{template}"),
23            Self::Stop => write!(f, "stopping"),
24            Self::Reload => write!(f, "reloading"),
25            Self::Notify(err) => write!(f, "{err}"),
26            Self::Widget(err) => write!(f, "{err}"),
27            Self::Resolver(err) => write!(f, "{err}"),
28            Self::InvalidComponentName => write!(f, "no such component"),
29        }
30    }
31}
32
33impl StdError for Error {}
34
35impl From<TemplateError> for Error {
36    fn from(err: TemplateError) -> Self {
37        Self::Template(err)
38    }
39}
40
41impl From<notify::Error> for Error {
42    fn from(err: notify::Error) -> Self {
43        Self::Notify(err)
44    }
45}
46
47impl From<anathema_widgets::error::Error> for Error {
48    fn from(value: anathema_widgets::error::Error) -> Self {
49        Self::Widget(value)
50    }
51}
52
53impl From<anathema_value_resolver::Error> for Error {
54    fn from(value: anathema_value_resolver::Error) -> Self {
55        Self::Resolver(value)
56    }
57}