js_sandbox_ios/
js_error.rs

1use std::{
2	error::Error,
3	fmt::{self, Display},
4};
5
6use crate::AnyError;
7
8/// Represents an error ocurring during script execution
9#[derive(Debug)]
10pub enum JsError {
11	/// JSON errors stemming from arguments or return values
12	Json(serde_json::Error),
13
14	/// Runtime errors occuring within a JS script
15	Runtime(AnyError),
16}
17
18impl Error for JsError {}
19
20impl Display for JsError {
21	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
22		match self {
23			JsError::Json(e) => write!(f, "{}", e),
24			JsError::Runtime(e) => write!(f, "{}", e),
25		}
26	}
27}
28
29impl From<AnyError> for JsError {
30	fn from(e: AnyError) -> JsError {
31		JsError::Runtime(e)
32	}
33}
34
35impl From<serde_json::Error> for JsError {
36	fn from(e: serde_json::Error) -> JsError {
37		JsError::Json(e)
38	}
39}