use core::error;
use core::fmt::{self, Debug};
pub type Result<T> = core::result::Result<T, Error>;
pub struct Error {
pub code: Code,
pub line: Option<usize>,
pub column: Option<usize>,
pub ptr: Option<usize>,
}
#[derive(Debug, Eq, PartialEq)]
#[non_exhaustive]
pub enum Code {
HashMapDuplicateKey,
SetDuplicateKey,
InvalidChar,
InvalidEscape,
InvalidKeyword,
InvalidNumber,
InvalidRadix(Option<u8>),
UnexpectedEOF,
UnmatchedDelimiter(char),
NoFloatFeature,
#[cfg(feature = "serde")]
Serde(alloc::string::String),
}
impl error::Error for Error {}
impl Debug for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"EdnError {{ code: {:?}, line: {:?}, column: {:?}, ptr: {:?} }}",
self.code, self.line, self.column, self.ptr
)
}
}
impl alloc::fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{self:?}")
}
}