This commit is contained in:
F. Levi 2024-09-18 15:40:17 +03:00
parent f95bd11db2
commit a80bb8f77e

View File

@ -222,7 +222,6 @@ bitflags! {
} }
impl Action { impl Action {
// @TODO: Consider using https://github.com/rust-phf/rust-phf
const SERDE_MAP_ARR: [(&'static str, Self); 34] = [ const SERDE_MAP_ARR: [(&'static str, Self); 34] = [
("*", Self::All), ("*", Self::All),
("search", Self::Search), ("search", Self::Search),
@ -272,7 +271,8 @@ impl Action {
.iter() .iter()
.find(|(_, ref action)| v == action) .find(|(_, ref action)| v == action)
.map(|(ser_action, _)| ser_action) .map(|(ser_action, _)| ser_action)
.expect("`action_wanted` should always have a matching serialized value") // actions should always have matching serialized values
.unwrap()
} }
pub const fn from_repr(repr: u8) -> Option<Self> { pub const fn from_repr(repr: u8) -> Option<Self> {
@ -399,10 +399,11 @@ impl Sequence for Action {
} }
fn previous(&self) -> Option<Self> { fn previous(&self) -> Option<Self> {
if self.bits() == 0 { let current_index = self.bits() as usize;
if current_index == 0 {
None None
} else { } else {
Some(Self::SERDE_MAP_ARR[self.bits() as usize - 1].1) Some(Self::SERDE_MAP_ARR[current_index - 1].1)
} }
} }