1use core::fmt::{self, Debug, Display};
2use std::error;
3
4pub(crate) enum ErrorKind {
5 InvalidIncrementLevel(String),
6}
7
8pub struct Error {
9 pub(crate) kind: ErrorKind,
10}
11
12impl Error {
13 pub(crate) fn new(kind: ErrorKind) -> Self {
14 Self { kind }
15 }
16}
17
18impl error::Error for Error {}
19
20impl Display for Error {
21 fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
22 match &self.kind {
23 ErrorKind::InvalidIncrementLevel(level) => {
24 write!(formatter, "invalid attempted increment level {level}")
25 }
26 }
27 }
28}
29
30impl Debug for Error {
31 fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
32 formatter.write_str("Error(\"")?;
33 Display::fmt(self, formatter)?;
34 formatter.write_str("\")")?;
35 Ok(())
36 }
37}