ferrijs_std/utils/
error.rs1use rquickjs::{CatchResultExt, CaughtError, Ctx, Error, IntoJs, Result, Value};
4
5pub trait ErrorExtensions<'js> {
6 fn into_value(self, ctx: &Ctx<'js>) -> Result<Value<'js>>;
7}
8
9impl<'js> ErrorExtensions<'js> for Error {
10 fn into_value(self, ctx: &Ctx<'js>) -> Result<Value<'js>> {
11 Err::<(), _>(self).catch(ctx).unwrap_err().into_value(ctx)
12 }
13}
14
15impl<'js> ErrorExtensions<'js> for CaughtError<'js> {
16 fn into_value(self, ctx: &Ctx<'js>) -> Result<Value<'js>> {
17 Ok(match self {
18 CaughtError::Error(err) => err.to_string().into_js(ctx)?,
19 CaughtError::Exception(ex) => ex.into_value(),
20 CaughtError::Value(val) => val,
21 })
22 }
23}