use alloc::string::String;
use core::fmt;
#[derive(Debug)]
#[non_exhaustive]
pub enum TokenizerError {
UnknownToken(String),
#[cfg(feature = "std")]
Io(std::io::Error),
MalformedFile(String),
}
impl fmt::Display for TokenizerError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
TokenizerError::UnknownToken(t) => write!(f, "unknown token: {t}"),
#[cfg(feature = "std")]
TokenizerError::Io(e) => write!(f, "I/O error: {e}"),
TokenizerError::MalformedFile(m) => write!(f, "malformed tokenizer file: {m}"),
}
}
}
impl core::error::Error for TokenizerError {
fn source(&self) -> Option<&(dyn core::error::Error + 'static)> {
#[cfg(feature = "std")]
if let TokenizerError::Io(e) = self {
return Some(e);
}
None
}
}
#[cfg(feature = "std")]
impl From<std::io::Error> for TokenizerError {
fn from(e: std::io::Error) -> Self {
TokenizerError::Io(e)
}
}