stak_dynamic/
error.rs

1use any_fn::AnyFnError;
2use core::{
3    error::Error,
4    fmt::{self, Display, Formatter},
5};
6
7/// An error.
8#[derive(Debug)]
9pub enum DynamicError {
10    /// An `AnyFn` error.
11    AnyFn(AnyFnError),
12    /// A foreign value expected.
13    ForeignValueExpected,
14    /// A value index error.
15    ValueIndex,
16    /// A virtual machine error.
17    Vm(stak_vm::Error),
18}
19
20impl From<AnyFnError> for DynamicError {
21    fn from(error: AnyFnError) -> Self {
22        Self::AnyFn(error)
23    }
24}
25
26impl From<stak_vm::Error> for DynamicError {
27    fn from(error: stak_vm::Error) -> Self {
28        Self::Vm(error)
29    }
30}
31
32impl Error for DynamicError {}
33
34impl Display for DynamicError {
35    fn fmt(&self, formatter: &mut Formatter) -> fmt::Result {
36        match self {
37            Self::AnyFn(error) => write!(formatter, "{error}"),
38            Self::ForeignValueExpected => write!(formatter, "foreign value expected"),
39            Self::ValueIndex => write!(formatter, "invalid value index"),
40            Self::Vm(error) => write!(formatter, "{error}"),
41        }
42    }
43}