prettylogger/
filtering.rs1use std::fmt;
2use serde::{Serialize, Deserialize};
3
4#[derive(Copy, Clone, Eq, PartialEq, PartialOrd, Ord, Hash, Debug, Default,
5 Serialize, Deserialize)]
6pub enum Verbosity {
8 All = 0,
10 #[default]
11 Standard = 1,
13 Quiet = 2,
15 ErrorsOnly = 3,
17}
18
19impl fmt::Display for Verbosity {
20 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21 let level_str = match *self {
22 Verbosity::All => "All",
23 Verbosity::Standard => "Standard",
24 Verbosity::Quiet => "Quiet",
25 Verbosity::ErrorsOnly => "ErrorsOnly",
26 };
27 write!(f, "{}", level_str)
28 }
29}
30
31impl TryFrom<i32> for Verbosity {
32 type Error = &'static str;
33 fn try_from(value: i32) -> Result<Self, Self::Error> {
34 match value {
35 0 => Ok(Verbosity::All),
36 1 => Ok(Verbosity::Standard),
37 2 => Ok(Verbosity::Quiet),
38 3 => Ok(Verbosity::ErrorsOnly),
39 _ => Err("Invalid value! Please provide a value in range 0-9."),
40 }
41 }
42}
43
44impl AsRef<str> for Verbosity {
45 fn as_ref(&self) -> &str {
46 match self {
47 Verbosity::All => "All",
48 Verbosity::Standard => "Standard",
49 Verbosity::Quiet => "Quiet",
50 Verbosity::ErrorsOnly => "ErrorsOnly",
51 }
52 }
53}