Attempt pushing bad code in order to stop stuck GitHub action

This commit is contained in:
F. Levi 2024-10-21 00:19:33 +03:00
parent 0419b93032
commit 544961372c

View File

@ -2,7 +2,7 @@ use std::convert::Infallible;
use std::hash::Hash; use std::hash::Hash;
use std::str::FromStr; use std::str::FromStr;
use bitflags::bitflags; use bitflags::{bitflags, Flags};
use deserr::{take_cf_content, DeserializeError, Deserr, MergeWithError, ValuePointerRef}; use deserr::{take_cf_content, DeserializeError, Deserr, MergeWithError, ValuePointerRef};
use enum_iterator::Sequence; use enum_iterator::Sequence;
use milli::update::Setting; use milli::update::Setting;
@ -291,15 +291,6 @@ impl Action {
.map(|(serde_name, _)| serde_name) .map(|(serde_name, _)| serde_name)
.expect("an action is missing a matching serialized value") .expect("an action is missing a matching serialized value")
} }
fn get_index(&self) -> usize {
Self::SERDE_MAP_ARR
.iter()
.enumerate()
.find(|(_, (_, action))| action == self)
.map(|(i, _)| i)
.unwrap()
}
} }
pub mod actions { pub mod actions {
@ -409,28 +400,51 @@ impl Sequence for Action {
const CARDINALITY: usize = Self::SERDE_MAP_ARR.len(); const CARDINALITY: usize = Self::SERDE_MAP_ARR.len();
fn next(&self) -> Option<Self> { fn next(&self) -> Option<Self> {
let next_index = self.get_index() + 1; let mut iter = Self::FLAGS.iter();
if next_index == Self::CARDINALITY { while let Some(action) = iter.next() {
None if action.value() == self {
} else { if let Some(action) = iter.next() {
Some(Self::SERDE_MAP_ARR[next_index].1) return Some(*action.value());
}
break;
}
} }
Non
} }
fn previous(&self) -> Option<Self> { fn previous(&self) -> Option<Self> {
let current_index = self.get_index(); let mut iter = Self::FLAGS.iter().peekable();
if current_index == 0 {
None if let Some(action) = iter.next() {
} else { if action.value() == self {
Some(Self::SERDE_MAP_ARR[current_index - 1].1) return None;
}
if let Some(next_action) = iter.peek() {
if next_action.value() == self {
return Some(*action.value());
}
}
} }
while let Some(action) = iter.next() {
if let Some(next_action) = iter.peek() {
if next_action.value() == self {
return Some(*action.value());
}
}
}
None
} }
fn first() -> Option<Self> { fn first() -> Option<Self> {
Some(Self::SERDE_MAP_ARR[0].1) Self::FLAGS.first().map(|v| *v.value())
} }
fn last() -> Option<Self> { fn last() -> Option<Self> {
Some(Self::SERDE_MAP_ARR[Self::CARDINALITY - 1].1) Self::FLAGS.last().map(|v| *v.value())
} }
} }