linera_wasmer/sys/
errors.rs1use crate::{LinkError, RuntimeError};
2use wasmer_vm::Trap;
3
4impl From<wasmer_compiler::LinkError> for LinkError {
5 fn from(other: wasmer_compiler::LinkError) -> Self {
6 match other {
7 wasmer_compiler::LinkError::Import(namespace, name, error) => {
8 Self::Import(namespace, name, error)
9 }
10 wasmer_compiler::LinkError::Trap(e) => Self::Trap(e.into()),
11 wasmer_compiler::LinkError::Resource(e) => Self::Resource(e),
12 }
13 }
14}
15
16impl From<Trap> for RuntimeError {
17 fn from(trap: Trap) -> Self {
18 if trap.is::<Self>() {
19 return trap.downcast::<Self>().unwrap();
20 }
21 let (wasm_trace, trap_code) = wasmer_compiler::get_trace_and_trapcode(&trap);
22 Self::new_from_source(trap, wasm_trace, trap_code)
23 }
24}