#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ErrorCategory {
Io,
UnknownFormat,
Parse,
Data,
Output,
}
impl ErrorCategory {
#[must_use]
pub fn token(self) -> &'static str {
match self {
ErrorCategory::Io => "io",
ErrorCategory::UnknownFormat => "unknown_format",
ErrorCategory::Parse => "parse",
ErrorCategory::Data => "data",
ErrorCategory::Output => "output",
}
}
pub const TOKENS: [&'static str; 5] = ["io", "unknown_format", "parse", "data", "output"];
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn every_category_token_is_in_the_published_set() {
for category in [
ErrorCategory::Io,
ErrorCategory::UnknownFormat,
ErrorCategory::Parse,
ErrorCategory::Data,
ErrorCategory::Output,
] {
assert!(ErrorCategory::TOKENS.contains(&category.token()));
}
}
}