use anyhow::{bail, Result};
use std::fmt;
pub fn enum_display(
variants_by_number: &[(&str, i32)],
formatter: &mut fmt::Formatter,
number: i32,
) -> fmt::Result {
match variants_by_number.binary_search_by_key(&number, |entry| entry.1) {
Ok(i) => formatter.write_str(variants_by_number[i].0),
Err(_) => write!(formatter, "{}", number),
}
}
pub fn enum_from_str(
variants_by_name: &[(&str, i32)],
value: &str,
type_name: &'static str,
) -> Result<i32> {
match variants_by_name.binary_search_by_key(&value, |entry| entry.0) {
Ok(i) => Ok(variants_by_name[i].1),
Err(_) => bail!("Unable to parse {} as {}", value, type_name),
}
}