1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use std::any::Any;
use wasm_bindgen::JsValue;

pub struct PassedToJsRuntime {
    pub js_value: JsValue,
    pub to_persist: Option<Box<dyn Any>>,
}

pub trait SafeIntoJsRuntime: Sized {
    fn safe_into_js_runtime(self) -> PassedToJsRuntime;
}

impl<T: SafeIntoJsRuntime> SafeIntoJsRuntime for Box<T> {
    fn safe_into_js_runtime(self) -> PassedToJsRuntime {
        (*self).safe_into_js_runtime()
    }
}