use core::{
fmt::{self, Display, Formatter},
num::ParseIntError,
};
use std::{error, io};
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum Error {
Io(String),
MissingCallRecord,
MissingProcedureOperation,
MissingStack,
MissingTime,
ParseInt(ParseIntError),
UnknownRecordType,
}
impl Display for Error {
fn fmt(&self, formatter: &mut Formatter) -> fmt::Result {
match self {
Self::Io(error) => write!(formatter, "{error}"),
Self::MissingCallRecord => write!(formatter, "missing call record"),
Self::MissingProcedureOperation => write!(formatter, "missing record type"),
Self::MissingStack => write!(formatter, "missing stack"),
Self::MissingTime => write!(formatter, "missing time"),
Self::ParseInt(error) => write!(formatter, "{error}"),
Self::UnknownRecordType => write!(formatter, "unknown record type"),
}
}
}
impl error::Error for Error {}
impl From<io::Error> for Error {
fn from(error: io::Error) -> Self {
Self::Io(error.to_string())
}
}
impl From<ParseIntError> for Error {
fn from(error: ParseIntError) -> Self {
Self::ParseInt(error)
}
}