Skip to main content

iii_sdk/
error.rs

1use thiserror::Error;
2
3/// Errors returned by the III SDK.
4#[derive(Debug, Error, Clone)]
5pub enum IIIError {
6    #[error("iii is not connected")]
7    NotConnected,
8    #[error("invocation timed out")]
9    Timeout,
10    #[error("runtime error: {0}")]
11    Runtime(String),
12    #[error("remote error ({code}): {message}")]
13    Remote {
14        code: String,
15        message: String,
16        stacktrace: Option<String>,
17    },
18    #[error("handler error: {0}")]
19    Handler(String),
20    #[error("serialization error: {0}")]
21    Serde(String),
22    #[error("websocket error: {0}")]
23    WebSocket(String),
24}
25
26impl From<serde_json::Error> for IIIError {
27    fn from(err: serde_json::Error) -> Self {
28        IIIError::Serde(err.to_string())
29    }
30}
31
32impl From<tokio_tungstenite::tungstenite::Error> for IIIError {
33    fn from(err: tokio_tungstenite::tungstenite::Error) -> Self {
34        IIIError::WebSocket(err.to_string())
35    }
36}