1use any_fn::AnyFnError;
2use core::{
3 error::Error,
4 fmt::{self, Display, Formatter},
5};
6
7#[derive(Debug)]
9pub enum DynamicError {
10 AnyFn(AnyFnError),
12 ForeignValueExpected,
14 ValueIndex,
16 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}