use crate::serialize::SizeBytes;
use std::fmt;
#[derive(Debug)]
pub enum BinverseError {
IO(std::io::Error),
VarIntOverflow,
InvalidUTF8,
SizeExceeded {
limit: SizeBytes,
found: usize
},
InvalidData
}
pub type BinverseResult<T> = Result<T, BinverseError>;
impl fmt::Display for BinverseError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::IO(err) => write!(f, "Binverse IO Error: {}", err),
Self::VarIntOverflow => write!(f, "VarInt overflow occured"),
Self::InvalidUTF8 => write!(f, "Invalid UTF8 data encountered"),
Self::SizeExceeded { limit, found } => write!(f, "Data structure size was exceeded, maximum allowed length was {} ({:?}) but found {}", limit.maximum(), limit, found),
Self::InvalidData => write!(f, "Data was invalid")
}
}
}
impl From<std::io::Error> for BinverseError {
fn from(e: std::io::Error) -> BinverseError {
BinverseError::IO(e)
}
}
impl std::error::Error for BinverseError { }