diff options
Diffstat (limited to 'src/errors.rs')
| -rw-r--r-- | src/errors.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/errors.rs b/src/errors.rs new file mode 100644 index 0000000..294159c --- /dev/null +++ b/src/errors.rs @@ -0,0 +1,47 @@ + +use std::error::Error; +use std::fmt::{Display, Formatter}; + +pub type AnyError = Box<dyn Error + 'static>; +pub type Result<T> = std::result::Result<T, AnyError>; + +#[derive(Debug)] +pub struct AError { + pub text: String +} +impl Error for AError { + fn source(&self) -> Option<&(dyn Error + 'static)> { + None + } +} +impl Display for AError { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "Error: {}", self.text) + } +} +#[macro_export] +macro_rules! aerr { + ($($description:tt)*) => {Box::new(crate::errors::AError{text: format!($($description)*)})} +} + + + +#[derive(Debug)] +pub struct ParseError { + pub text: String +} +impl Error for ParseError { + fn source(&self) -> Option<&(dyn Error + 'static)> { + None + } +} +impl Display for ParseError { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "Error: {}", self.text) + } +} +#[macro_export] +macro_rules! perr { + ($($description:tt)*) => {crate::errors::ParseError{text: format!($($description)*)}} +} +pub type PResult<T> = std::result::Result<T, ParseError>; |
