Skip to main content

bixverse_sparse/
verbosity.rs

1//! Verbosity levels shared across the bixverse crates.
2
3/// Enum that controls verbosity
4#[derive(Clone, Copy, Debug, Default)]
5pub enum Verbosity {
6    /// No verbosity at all
7    #[default]
8    Quiet,
9    /// Normal levels of verbosity
10    Normal,
11    /// Detailed verbosity with increased messages
12    Detailed,
13}
14
15impl Verbosity {
16    /// Returns true if normal or detailed verbosity is set
17    pub fn normal_verbosity(&self) -> bool {
18        matches!(self, Verbosity::Normal | Verbosity::Detailed)
19    }
20
21    /// Returns true if detailed verbosity is set
22    pub fn detailed_verbosity(&self) -> bool {
23        matches!(self, Verbosity::Detailed)
24    }
25}
26
27/// Parse verbosity leverl
28///
29/// ### Params
30///
31/// * `level` - If `1` returns [Verbosity::Normal], with `2`
32///   [Verbosity::Detailed]
33///
34/// ### Returns
35///
36/// The desired [Verbosity] level.
37pub fn parse_verbosity_level(level: usize) -> Verbosity {
38    match level {
39        0 => Verbosity::Quiet,
40        1 => Verbosity::Normal,
41        2 => Verbosity::Detailed,
42        _ => Verbosity::Quiet,
43    }
44}