tauri-wasm 0.1.1

Tauri API in WASM
Documentation
use {
    crate::core::{InvokeArgs, InvokeOptions},
    serde::Serialize,
    wasm_bindgen::JsValue,
};

pub struct Data<T>(pub T)
where
    T: ?Sized;

impl<T> InvokeArgs for Data<T>
where
    T: Serialize,
{
    fn invoke_args(self) -> Result<JsValue, JsValue> {
        (&self).invoke_args()
    }
}

impl<T> InvokeArgs for &Data<T>
where
    T: Serialize + ?Sized,
{
    fn invoke_args(self) -> Result<JsValue, JsValue> {
        serde_wasm_bindgen::to_value(&self.0).map_err(JsValue::from)
    }
}

impl<T> InvokeOptions for Data<T>
where
    T: Serialize,
{
    fn invoke_options(self) -> Result<JsValue, JsValue> {
        (&self).invoke_options()
    }
}

impl<T> InvokeOptions for &Data<T>
where
    T: Serialize + ?Sized,
{
    fn invoke_options(self) -> Result<JsValue, JsValue> {
        serde_wasm_bindgen::to_value(&self.0).map_err(JsValue::from)
    }
}