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}