#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum OtherFunction {
AllOf,
AnyOf,
CheckLimits,
ConvertColor,
CurrentUserHasPrivilege,
Enum,
Evaluate,
FindFile,
GetEngine,
NoValidation,
OutputMessage,
Rgb,
TargetName,
}
impl OtherFunction {
pub const ALL: [Self; 13] = [
Self::AllOf,
Self::AnyOf,
Self::CheckLimits,
Self::ConvertColor,
Self::CurrentUserHasPrivilege,
Self::Enum,
Self::Evaluate,
Self::FindFile,
Self::GetEngine,
Self::NoValidation,
Self::OutputMessage,
Self::Rgb,
Self::TargetName,
];
#[must_use]
pub const fn name(self) -> &'static str {
match self {
Self::AllOf => "AllOf",
Self::AnyOf => "AnyOf",
Self::CheckLimits => "CheckLimits",
Self::ConvertColor => "ConvertColor",
Self::CurrentUserHasPrivilege => "CurrentUserHasPrivilege",
Self::Enum => "Enum",
Self::Evaluate => "Evaluate",
Self::FindFile => "FindFile",
Self::GetEngine => "GetEngine",
Self::NoValidation => "NoValidation",
Self::OutputMessage => "OutputMessage",
Self::Rgb => "RGB",
Self::TargetName => "TargetName",
}
}
}
#[cfg(test)]
mod tests {
use super::OtherFunction;
#[test]
fn every_name_is_distinct() {
let mut names: Vec<&str> = OtherFunction::ALL.iter().map(|f| f.name()).collect();
names.sort_unstable();
let count = names.len();
names.dedup();
assert_eq!(names.len(), count);
}
}