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}