aranya_runtime/vm_policy/
error.rsuse core::fmt;
use crate::{engine::EngineError, storage::StorageError};
#[derive(Debug)]
pub enum VmPolicyError {
Deserialization(postcard::Error),
EngineError(EngineError),
StorageError(StorageError),
Unknown,
}
impl fmt::Display for VmPolicyError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Deserialization(e) => write!(f, "deserialize error: {e}"),
Self::EngineError(e) => write!(f, "engine error: {e}"),
Self::StorageError(e) => write!(f, "storage error: {e}"),
Self::Unknown => write!(f, "unknown error"),
}
}
}
impl core::error::Error for VmPolicyError {
fn source(&self) -> Option<&(dyn core::error::Error + 'static)> {
match self {
Self::EngineError(e) => Some(e),
Self::StorageError(e) => Some(e),
_ => None,
}
}
}
impl From<EngineError> for VmPolicyError {
fn from(value: EngineError) -> Self {
VmPolicyError::EngineError(value)
}
}
impl From<StorageError> for VmPolicyError {
fn from(value: StorageError) -> Self {
VmPolicyError::StorageError(value)
}
}