use alloc::string::String;
use core::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ParseError {
pub message: String,
pub offset: Option<usize>,
}
impl fmt::Display for ParseError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if let Some(off) = self.offset {
write!(f, "parse error at offset {}: {}", off, self.message)
} else {
write!(f, "parse error: {}", self.message)
}
}
}
#[cfg(feature = "std")]
impl std::error::Error for ParseError {}
impl ParseError {
pub fn new(message: impl Into<String>, offset: Option<usize>) -> Self {
Self {
message: message.into(),
offset,
}
}
}