Skip to main content

rhizome/error/
mod.rs

1use core::fmt::{Debug, Display, Error as fmtError, Formatter};
2use std::error::Error as stdError;
3
4pub mod auto_provision_error;
5
6#[derive(Debug)]
7pub enum Error {
8	NoDefault,
9	NoTagMatched,
10	Other(Box<dyn stdError>),
11}
12
13impl stdError for Error {
14	fn source(&self) -> Option<&(dyn stdError + 'static)> {
15		use Error::*;
16		match self {
17			NoDefault => None,
18			NoTagMatched => None,
19			Other(source) => Some(source.as_ref()),
20		}
21	}
22}
23impl Display for Error {
24	fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), fmtError> {
25		use Error::*;
26		match self {
27			NoDefault => writeln!(fmt, "Not provided.")?,
28			NoTagMatched => writeln!(fmt, "No matching tag found to default-provide at.")?,
29			Other(o) => write!(fmt, "{:#}", o)?,
30		}
31		Ok(())
32	}
33}
34
35impl PartialEq for Error {
36	fn eq(&self, rhs: &Error) -> bool {
37		use Error::*;
38		match (self, rhs) {
39			(NoDefault, NoDefault) => true,
40			(NoTagMatched, NoTagMatched) => true,
41			_ => false,
42		}
43	}
44}