1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
use crate::StrictnessLevel;
use std::fmt;
#[derive(Debug, Copy, Clone, PartialEq)]
pub enum ErrorLevel {
BreakingError,
InvalidatingError,
StrictWarning,
LooseWarning,
GeneralWarning,
}
impl ErrorLevel {
pub fn descriptor(&self) -> &str {
match self {
ErrorLevel::BreakingError => "BreakingError",
ErrorLevel::InvalidatingError => "InvalidatingError",
ErrorLevel::StrictWarning => "StrictWarning",
ErrorLevel::LooseWarning => "LooseWarning",
ErrorLevel::GeneralWarning => "GeneralWarning",
}
}
pub fn fails(&self, level: StrictnessLevel) -> bool {
match level {
StrictnessLevel::Strict => true,
StrictnessLevel::Medium => !matches!(self, ErrorLevel::GeneralWarning),
StrictnessLevel::Loose => {
!matches!(self, ErrorLevel::GeneralWarning | ErrorLevel::LooseWarning)
}
}
}
}
impl fmt::Display for ErrorLevel {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.descriptor())
}
}