use crate::constants::MAX_CODEPOINT;
use core::fmt;
use std::error;
#[derive(Debug, PartialEq)]
pub enum Error {
InvalidCategory(Box<str>),
InvalidVersion(Box<str>),
InvalidCodepoints(u32, u32),
CodepointNotInRange(u32, u32),
}
impl error::Error for Error {}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::InvalidCategory(category) => f.write_fmt(format_args!(
"'{category}' is not a valid Unicode category"
)),
Error::InvalidVersion(version) => {
f.write_fmt(format_args!("'{version}' is not a valid Unicode version"))
}
Error::InvalidCodepoints(minimum, maximum) => f.write_fmt(format_args!(
"Minimum codepoint should be less or equal than maximum codepoint. Got {minimum} < {maximum}"
)),
Error::CodepointNotInRange(minimum, maximum) => f.write_fmt(format_args!(
"Codepoints should be in [0; {MAX_CODEPOINT}] range. Got: [{minimum}; {maximum}]"
)),
}
}
}