use crate::memory::error::Error as MemoryError;
use std::result::Result as StandardResult;
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum ErrorKind {
MemoryError,
MemoryNotMapped,
OperatingSystemInitializationFailed,
InvalidData,
TypeInformationError,
InvalidOffset,
NotSupported,
TypeTraversalError,
InvalidPageTableEntry,
NoRootPageDirectoryFound,
EntityNotFound,
}
#[derive(Debug)]
pub struct Error {
kind: ErrorKind,
message: String,
}
pub type Result<T> = StandardResult<T, Error>;
impl Error {
pub fn new(kind: ErrorKind, message: &str) -> Error {
Error {
kind,
message: message.to_owned(),
}
}
pub fn kind(&self) -> ErrorKind {
self.kind
}
pub fn message(&self) -> &str {
&self.message
}
}
impl From<MemoryError> for Error {
fn from(memory_error: MemoryError) -> Self {
Self::new(ErrorKind::MemoryError, &format!("{memory_error:?}"))
}
}