convert-js 1.0.0-alpha.15

Convert rust wasm from/to js
Documentation
use convert_js::{jsv, ToJs};
use js_test::deep_equal;
use wasm_bindgen::JsValue;
use wasm_bindgen_test::wasm_bindgen_test;

#[wasm_bindgen_test]
fn struct_with_types() {
    #[derive(ToJs)]
    struct MyField<V> {
        key: String,
        value: V,
    }
    {
        let v = MyField {
            key: "k".to_owned(),
            value: false,
        };
        assert!(deep_equal(
            &v.to_js(),
            jsv!({ key: "k", value: false }).as_ref()
        ));
    }
    {
        let v = MyField {
            key: "k".to_owned(),
            value: JsValue::NULL,
        };
        assert!(deep_equal(
            &v.to_js(),
            jsv!({ key: "k", value: jsv!(null) }).as_ref()
        ));
    }
}

#[wasm_bindgen_test]
fn struct_with_lifetimes() {
    #[derive(ToJs)]
    struct MyField<'a, K: ToString, V> {
        key: &'a K,
        value: &'a V,
    }

    {
        let value = js_sys::Array::new();
        let v = MyField {
            key: &"k",
            value: &value,
        };
        assert!(deep_equal(
            &v.to_js(),
            jsv!({ key: "k", value: jsv!([]) }).as_ref()
        ));
    }
    {
        let key = "k".to_owned();
        let v = MyField {
            key: &key,
            value: &key,
        };
        assert!(deep_equal(
            &v.to_js(),
            jsv!({ key: "k", value: "k" }).as_ref()
        ));
    }
}