toggle.rs

 1/// Whether the entry is toggleable, and if so, whether it is currently toggled.
 2///
 3/// To make an element toggleable, simply add a `Toggle::Toggled(_)` and handle it's cases.
 4///
 5/// You can check if an element is toggleable with `.is_toggleable()`
 6///
 7/// Possible values:
 8/// - `Toggle::NotToggleable` - The entry is not toggleable
 9/// - `Toggle::Toggled(true)` - The entry is toggleable and toggled
10/// - `Toggle::Toggled(false)` - The entry is toggleable and not toggled
11#[derive(Debug, Copy, Clone, PartialEq, Eq)]
12pub enum Toggle {
13    NotToggleable,
14    Toggled(bool),
15}
16
17impl Toggle {
18    /// Returns true if the entry is toggled (or is not toggleable.)
19    ///
20    /// As element that isn't toggleable is always "expanded" or "enabled"
21    /// returning true in that case makes sense.
22    pub fn is_toggled(&self) -> bool {
23        match self {
24            Self::Toggled(false) => false,
25            _ => true,
26        }
27    }
28
29    pub fn is_toggleable(&self) -> bool {
30        match self {
31            Self::Toggled(_) => true,
32            _ => false,
33        }
34    }
35}
36
37impl From<bool> for Toggle {
38    fn from(toggled: bool) -> Self {
39        Toggle::Toggled(toggled)
40    }
41}