#[allow(non_camel_case_types)]
#[derive(Debug, PartialEq)]
pub enum Error {
Size { index: usize, node: Node },
Type { index: usize, node: Node },
Unexpected { index: usize, node: Node },
}
#[allow(non_camel_case_types)]
#[derive(Debug, PartialEq)]
pub enum Node {
SIMPLE_STRING,
BULK_STRING,
UNKNOWN,
INTEGER,
ERROR,
ARRAY,
SIZE,
NIL,
}
impl Error {
pub fn index(&self) -> &usize {
match &self {
Self::Type { index, .. } => index,
Self::Size { index, .. } => index,
Self::Unexpected { index, .. } => index,
}
}
pub fn node(&self) -> &Node {
match &self {
Self::Type { node, .. } => node,
Self::Size { node, .. } => node,
Self::Unexpected { node, .. } => node,
}
}
pub fn of_size(node: Node, index: usize) -> Error {
Error::Size { index, node }
}
pub fn of_type(node: Node, index: usize) -> Error {
Error::Type { index, node }
}
pub fn of_unexpected(node: Node, index: usize) -> Error {
Error::Unexpected { index, node }
}
}