1use core::fmt::Display;
7
8use alloc::string::String;
9use wamr_rust_sdk::RuntimeError;
10
11pub type Result<T> = core::result::Result<T, Error>;
13
14#[derive(Debug)]
19#[repr(C)]
20pub enum Error {
21 InvalidPointer,
23
24 InvalidUtf8String,
26
27 SliceConversionFailed(shared::Error),
29
30 NotImplemented,
32
33 InitializationFailure,
35
36 CompilationError(String),
38
39 InstantiationFailure(String),
41
42 ExecutionError(String),
44
45 FunctionNotFound,
47
48 AllocationFailure,
50
51 FailedToGetTaskInformations(task::Error),
53
54 PoisonedLock,
56
57 InvalidModule,
59
60 InternalError,
62
63 InvalidThreadIdentifier,
65
66 Time(time::Error),
68
69 FailedToRegisterFileContext,
71}
72
73impl Display for Error {
74 fn fmt(&self, formatter: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
75 write!(formatter, "{:?}", self)
76 }
77}
78
79impl core::error::Error for Error {}
80
81impl From<RuntimeError> for Error {
82 fn from(error: RuntimeError) -> Self {
83 match error {
84 RuntimeError::NotImplemented => Error::NotImplemented,
85 RuntimeError::InitializationFailure => Error::InitializationFailure,
86 RuntimeError::WasmFileFSError(_) => Error::InitializationFailure,
87 RuntimeError::CompilationError(e) => Error::CompilationError(e),
88 RuntimeError::InstantiationFailure(e) => Error::InstantiationFailure(e),
89 RuntimeError::ExecutionError(e) => Error::ExecutionError(e.message),
90 RuntimeError::FunctionNotFound => Error::FunctionNotFound,
91 }
92 }
93}
94impl From<task::Error> for Error {
95 fn from(error: task::Error) -> Self {
96 Error::FailedToGetTaskInformations(error)
97 }
98}