#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
pub enum CapKind {
Eq,
Ord,
Hash,
HashStable,
Numeric,
}
impl CapKind {
pub const ALL: &'static [CapKind] = &[
CapKind::Eq,
CapKind::Ord,
CapKind::Hash,
CapKind::HashStable,
CapKind::Numeric,
];
}
#[cfg(test)]
mod tests {
use super::*;
use std::collections::HashSet;
#[test]
fn all_lists_every_capability() {
let listed: HashSet<CapKind> = CapKind::ALL.iter().copied().collect();
assert_eq!(listed.len(), CapKind::ALL.len(), "no duplicates in ALL");
for kind in CapKind::ALL {
let named = match kind {
CapKind::Eq => CapKind::Eq,
CapKind::Ord => CapKind::Ord,
CapKind::Hash => CapKind::Hash,
CapKind::HashStable => CapKind::HashStable,
CapKind::Numeric => CapKind::Numeric,
};
assert!(listed.contains(&named));
}
}
}