toggleable.rs

 1/// Whether an element is able to be toggled.
 2#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
 3pub enum Toggleable {
 4    Toggleable(ToggleState),
 5    NotToggleable,
 6}
 7
 8/// The current state of a [`Toggleable`] element.
 9#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
10pub enum ToggleState {
11    Toggled,
12    NotToggled,
13}
14
15impl ToggleState {
16    /// Returns whether an entry is toggled.
17    pub fn is_toggled(&self) -> bool {
18        match self {
19            ToggleState::Toggled => true,
20            ToggleState::NotToggled => false,
21        }
22    }
23}
24
25impl From<bool> for ToggleState {
26    fn from(toggled: bool) -> Self {
27        match toggled {
28            true => Self::Toggled,
29            false => Self::NotToggled,
30        }
31    }
32}
33
34impl From<ToggleState> for bool {
35    fn from(value: ToggleState) -> Self {
36        value.is_toggled()
37    }
38}