Skip to main content

scripting/
error.rs

1use std::sync::PoisonError;
2
3use finance::error::FinanceError;
4use thiserror::Error;
5use wasmtime::Error as WASMError;
6
7use crate::runtime::EngineError;
8
9#[derive(Debug, Error)]
10pub enum HookError {
11    #[error("WASM: {0}")]
12    WASM(#[from] WASMError),
13    #[error("WASM memory access error")]
14    WASMMem,
15    #[error("Mutex lock error")]
16    Lock,
17    #[error("Finance error: {0}")]
18    Finance(#[from] FinanceError),
19    #[error("Parse error: {0}")]
20    Parse(String),
21    #[error("Script error: {0}")]
22    Script(String),
23    #[error("Engine: {0}")]
24    Engine(#[from] EngineError),
25}
26
27impl<T> From<PoisonError<T>> for HookError {
28    fn from(err: PoisonError<T>) -> Self {
29        tracing::error!("Mutex lock error: {err}");
30        Self::Lock
31    }
32}