1
use std::sync::PoisonError;
2

            
3
use finance::error::FinanceError;
4
use thiserror::Error;
5
use wasmtime::Error as WASMError;
6

            
7
#[derive(Debug, Error)]
8
pub enum HookError {
9
    #[error("WASM: {0}")]
10
    WASM(#[from] WASMError),
11
    #[error("WASM memory access error")]
12
    WASMMem,
13
    #[error("Mutex lock error")]
14
    Lock,
15
    #[error("Finance error: {0}")]
16
    Finance(#[from] FinanceError),
17
    #[error("Parse error: {0}")]
18
    Parse(String),
19
    #[error("Script error: {0}")]
20
    Script(String),
21
}
22

            
23
impl<T> From<PoisonError<T>> for HookError {
24
    fn from(err: PoisonError<T>) -> Self {
25
        log::error!("Mutex lock error: {err}");
26
        Self::Lock
27
    }
28
}