#[derive(Debug, Clone, PartialEq)]
pub enum ParseError {
AtPosition {
position: u64,
message: String,
},
MemoryLimitExceeded {
used: usize,
max: usize,
},
TextDecodeError {
message: String,
},
AttributeDecodeError {
message: String,
},
AttributeError {
message: String,
},
Generic {
message: String,
},
}
impl std::fmt::Display for ParseError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ParseError::AtPosition { position, message } => {
write!(f, "parse error at position {}: {}", position, message)
}
ParseError::MemoryLimitExceeded { used, max } => {
write!(f, "memory limit exceeded: {} > {}", used, max)
}
ParseError::TextDecodeError { message } => {
write!(f, "text decode error: {}", message)
}
ParseError::AttributeDecodeError { message } => {
write!(f, "attribute value decode error: {}", message)
}
ParseError::AttributeError { message } => {
write!(f, "attribute error: {}", message)
}
ParseError::Generic { message } => {
write!(f, "{}", message)
}
}
}
}
impl std::error::Error for ParseError {}