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}