1use std::cmp;
16
17#[repr(usize)]
18#[derive(Copy, Eq, Debug)]
19pub enum Level {
20 Error = 1,
21 Warn,
22 Info,
23 Debug,
24 Trace,
25}
26
27impl Clone for Level {
28 #[inline]
29 fn clone(&self) -> Level {
30 *self
31 }
32}
33
34impl PartialEq for Level {
35 #[inline]
36 fn eq(&self, other: &Level) -> bool {
37 *self as usize == *other as usize
38 }
39}
40
41impl PartialEq<LevelFilter> for Level {
42 #[inline]
43 fn eq(&self, other: &LevelFilter) -> bool {
44 *self as usize == *other as usize
45 }
46}
47
48impl PartialOrd for Level {
49 #[inline]
50 fn partial_cmp(&self, other: &Level) -> Option<cmp::Ordering> {
51 Some(self.cmp(other))
52 }
53
54 #[inline]
55 fn lt(&self, other: &Level) -> bool {
56 (*self as usize) < *other as usize
57 }
58
59 #[inline]
60 fn le(&self, other: &Level) -> bool {
61 *self as usize <= *other as usize
62 }
63
64 #[inline]
65 fn gt(&self, other: &Level) -> bool {
66 *self as usize > *other as usize
67 }
68
69 #[inline]
70 fn ge(&self, other: &Level) -> bool {
71 *self as usize >= *other as usize
72 }
73}
74
75impl PartialOrd<LevelFilter> for Level {
76 #[inline]
77 fn partial_cmp(&self, other: &LevelFilter) -> Option<cmp::Ordering> {
78 Some((*self as usize).cmp(&(*other as usize)))
79 }
80
81 #[inline]
82 fn lt(&self, other: &LevelFilter) -> bool {
83 (*self as usize) < *other as usize
84 }
85
86 #[inline]
87 fn le(&self, other: &LevelFilter) -> bool {
88 *self as usize <= *other as usize
89 }
90
91 #[inline]
92 fn gt(&self, other: &LevelFilter) -> bool {
93 *self as usize > *other as usize
94 }
95
96 #[inline]
97 fn ge(&self, other: &LevelFilter) -> bool {
98 *self as usize >= *other as usize
99 }
100}
101
102impl Ord for Level {
103 #[inline]
104 fn cmp(&self, other: &Level) -> cmp::Ordering {
105 (*self as usize).cmp(&(*other as usize))
106 }
107}
108
109#[repr(usize)]
110#[derive(Copy, Eq, Debug)]
111pub enum LevelFilter {
112 Off,
114 Error,
116 Warn,
118 Info,
120 Debug,
122 Trace,
124}
125
126impl Clone for LevelFilter {
129 #[inline]
130 fn clone(&self) -> LevelFilter {
131 *self
132 }
133}
134
135impl PartialEq for LevelFilter {
136 #[inline]
137 fn eq(&self, other: &LevelFilter) -> bool {
138 *self as usize == *other as usize
139 }
140}
141
142impl PartialEq<Level> for LevelFilter {
143 #[inline]
144 fn eq(&self, other: &Level) -> bool {
145 other.eq(self)
146 }
147}
148
149impl PartialOrd for LevelFilter {
150 #[inline]
151 fn partial_cmp(&self, other: &LevelFilter) -> Option<cmp::Ordering> {
152 Some(self.cmp(other))
153 }
154
155 #[inline]
156 fn lt(&self, other: &LevelFilter) -> bool {
157 (*self as usize) < *other as usize
158 }
159
160 #[inline]
161 fn le(&self, other: &LevelFilter) -> bool {
162 *self as usize <= *other as usize
163 }
164
165 #[inline]
166 fn gt(&self, other: &LevelFilter) -> bool {
167 *self as usize > *other as usize
168 }
169
170 #[inline]
171 fn ge(&self, other: &LevelFilter) -> bool {
172 *self as usize >= *other as usize
173 }
174}
175
176impl PartialOrd<Level> for LevelFilter {
177 #[inline]
178 fn partial_cmp(&self, other: &Level) -> Option<cmp::Ordering> {
179 Some((*self as usize).cmp(&(*other as usize)))
180 }
181
182 #[inline]
183 fn lt(&self, other: &Level) -> bool {
184 (*self as usize) < *other as usize
185 }
186
187 #[inline]
188 fn le(&self, other: &Level) -> bool {
189 *self as usize <= *other as usize
190 }
191
192 #[inline]
193 fn gt(&self, other: &Level) -> bool {
194 *self as usize > *other as usize
195 }
196
197 #[inline]
198 fn ge(&self, other: &Level) -> bool {
199 *self as usize >= *other as usize
200 }
201}
202
203impl Ord for LevelFilter {
204 #[inline]
205 fn cmp(&self, other: &LevelFilter) -> cmp::Ordering {
206 (*self as usize).cmp(&(*other as usize))
207 }
208}