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}