ww-macro 0.0.1

Macro for worked
Documentation
#![feature(prelude_import)]
#[prelude_import]
use std::prelude::rust_2021::*;
#[macro_use]
extern crate std;
#[cfg(test)]
mod test {
    use bincode::{Decode, Encode};
    use ww_macro::*;
    use wasm_bindgen::prelude::*;
    pub struct Input(pub i32, pub i32);
    impl ::bincode::Encode for Input {
        fn encode<__E: ::bincode::enc::Encoder>(
            &self,
            encoder: &mut __E,
        ) -> core::result::Result<(), ::bincode::error::EncodeError> {
            ::bincode::Encode::encode(&self.0, encoder)?;
            ::bincode::Encode::encode(&self.1, encoder)?;
            Ok(())
        }
    }
    impl ::bincode::Decode for Input {
        fn decode<__D: ::bincode::de::Decoder>(
            decoder: &mut __D,
        ) -> core::result::Result<Self, ::bincode::error::DecodeError> {
            Ok(Self {
                0: ::bincode::Decode::decode(decoder)?,
                1: ::bincode::Decode::decode(decoder)?,
            })
        }
    }
    impl<'__de> ::bincode::BorrowDecode<'__de> for Input {
        fn borrow_decode<__D: ::bincode::de::BorrowDecoder<'__de>>(
            decoder: &mut __D,
        ) -> core::result::Result<Self, ::bincode::error::DecodeError> {
            Ok(Self {
                0: ::bincode::BorrowDecode::borrow_decode(decoder)?,
                1: ::bincode::BorrowDecode::borrow_decode(decoder)?,
            })
        }
    }
    #[automatically_derived]
    impl wasm_bindgen::describe::WasmDescribe for Input {
        fn describe() {
            use wasm_bindgen::__wbindgen_if_not_std;
            use wasm_bindgen::describe::*;
            inform(RUST_STRUCT);
            inform(5u32);
            inform(73u32);
            inform(110u32);
            inform(112u32);
            inform(117u32);
            inform(116u32);
        }
    }
    #[automatically_derived]
    impl wasm_bindgen::convert::IntoWasmAbi for Input {
        type Abi = u32;
        fn into_abi(self) -> u32 {
            use wasm_bindgen::__rt::std::boxed::Box;
            use wasm_bindgen::__rt::WasmRefCell;
            Box::into_raw(Box::new(WasmRefCell::new(self))) as u32
        }
    }
    #[automatically_derived]
    impl wasm_bindgen::convert::FromWasmAbi for Input {
        type Abi = u32;
        unsafe fn from_abi(js: u32) -> Self {
            use wasm_bindgen::__rt::std::boxed::Box;
            use wasm_bindgen::__rt::{assert_not_null, WasmRefCell};
            let ptr = js as *mut WasmRefCell<Input>;
            assert_not_null(ptr);
            let js = Box::from_raw(ptr);
            (*js).borrow_mut();
            js.into_inner()
        }
    }
    #[automatically_derived]
    impl wasm_bindgen::__rt::core::convert::From<Input> for wasm_bindgen::JsValue {
        fn from(value: Input) -> Self {
            let ptr = wasm_bindgen::convert::IntoWasmAbi::into_abi(value);
            #[cfg(
                not(
                    all(
                        target_arch = "wasm32",
                        not(any(target_os = "emscripten", target_os = "wasi"))
                    )
                )
            )]
            unsafe fn __wbg_input_new(_: u32) -> u32 {
                {
                    ::std::rt::begin_panic(
                        "cannot convert to JsValue outside of the wasm target",
                    );
                }
            }
            unsafe {
                <wasm_bindgen::JsValue as wasm_bindgen::convert::FromWasmAbi>::from_abi(
                    __wbg_input_new(ptr),
                )
            }
        }
    }
    #[automatically_derived]
    impl wasm_bindgen::convert::RefFromWasmAbi for Input {
        type Abi = u32;
        type Anchor = wasm_bindgen::__rt::Ref<'static, Input>;
        unsafe fn ref_from_abi(js: Self::Abi) -> Self::Anchor {
            let js = js as *mut wasm_bindgen::__rt::WasmRefCell<Input>;
            wasm_bindgen::__rt::assert_not_null(js);
            (*js).borrow()
        }
    }
    #[automatically_derived]
    impl wasm_bindgen::convert::RefMutFromWasmAbi for Input {
        type Abi = u32;
        type Anchor = wasm_bindgen::__rt::RefMut<'static, Input>;
        unsafe fn ref_mut_from_abi(js: Self::Abi) -> Self::Anchor {
            let js = js as *mut wasm_bindgen::__rt::WasmRefCell<Input>;
            wasm_bindgen::__rt::assert_not_null(js);
            (*js).borrow_mut()
        }
    }
    #[automatically_derived]
    impl wasm_bindgen::convert::LongRefFromWasmAbi for Input {
        type Abi = u32;
        type Anchor = wasm_bindgen::__rt::Ref<'static, Input>;
        unsafe fn long_ref_from_abi(js: Self::Abi) -> Self::Anchor {
            <Self as wasm_bindgen::convert::RefFromWasmAbi>::ref_from_abi(js)
        }
    }
    #[automatically_derived]
    impl wasm_bindgen::convert::OptionIntoWasmAbi for Input {
        #[inline]
        fn none() -> Self::Abi {
            0
        }
    }
    #[automatically_derived]
    impl wasm_bindgen::convert::OptionFromWasmAbi for Input {
        #[inline]
        fn is_none(abi: &Self::Abi) -> bool {
            *abi == 0
        }
    }
    #[allow(clippy::all)]
    impl wasm_bindgen::convert::TryFromJsValue for Input {
        type Error = wasm_bindgen::JsValue;
        fn try_from_js_value(
            value: wasm_bindgen::JsValue,
        ) -> wasm_bindgen::__rt::std::result::Result<Self, Self::Error> {
            let idx = wasm_bindgen::convert::IntoWasmAbi::into_abi(&value);
            #[cfg(
                not(
                    all(
                        target_arch = "wasm32",
                        not(any(target_os = "emscripten", target_os = "wasi"))
                    )
                )
            )]
            unsafe fn __wbg_input_unwrap(_: u32) -> u32 {
                {
                    ::std::rt::begin_panic(
                        "cannot convert from JsValue outside of the wasm target",
                    );
                }
            }
            let ptr = unsafe { __wbg_input_unwrap(idx) };
            if ptr == 0 {
                wasm_bindgen::__rt::std::result::Result::Err(value)
            } else {
                wasm_bindgen::__rt::std::mem::forget(value);
                unsafe {
                    wasm_bindgen::__rt::std::result::Result::Ok(
                        <Self as wasm_bindgen::convert::FromWasmAbi>::from_abi(ptr),
                    )
                }
            }
        }
    }
    impl wasm_bindgen::describe::WasmDescribeVector for Input {
        fn describe_vector() {
            use wasm_bindgen::describe::*;
            inform(VECTOR);
            inform(NAMED_EXTERNREF);
            inform(5u32);
            inform(73u32);
            inform(110u32);
            inform(112u32);
            inform(117u32);
            inform(116u32);
        }
    }
    impl wasm_bindgen::convert::VectorIntoWasmAbi for Input {
        type Abi = <wasm_bindgen::__rt::std::boxed::Box<
            [wasm_bindgen::JsValue],
        > as wasm_bindgen::convert::IntoWasmAbi>::Abi;
        fn vector_into_abi(
            vector: wasm_bindgen::__rt::std::boxed::Box<[Input]>,
        ) -> Self::Abi {
            wasm_bindgen::convert::js_value_vector_into_abi(vector)
        }
    }
    impl wasm_bindgen::convert::VectorFromWasmAbi for Input {
        type Abi = <wasm_bindgen::__rt::std::boxed::Box<
            [wasm_bindgen::JsValue],
        > as wasm_bindgen::convert::FromWasmAbi>::Abi;
        unsafe fn vector_from_abi(
            js: Self::Abi,
        ) -> wasm_bindgen::__rt::std::boxed::Box<[Input]> {
            wasm_bindgen::convert::js_value_vector_from_abi(js)
        }
    }
    #[automatically_derived]
    const _: () = {
        #[doc(hidden)]
        pub unsafe extern "C" fn __wbg_get_input_0(
            js: u32,
        ) -> wasm_bindgen::convert::WasmRet<
            <i32 as wasm_bindgen::convert::IntoWasmAbi>::Abi,
        > {
            use wasm_bindgen::__rt::{WasmRefCell, assert_not_null};
            use wasm_bindgen::convert::IntoWasmAbi;
            fn assert_copy<T: Copy>() {}
            assert_copy::<i32>();
            let js = js as *mut WasmRefCell<Input>;
            assert_not_null(js);
            let val = (*js).borrow().0;
            <i32 as IntoWasmAbi>::into_abi(val).into()
        }
    };
    #[automatically_derived]
    const _: () = {
        #[doc(hidden)]
        pub unsafe extern "C" fn __wbg_get_input_1(
            js: u32,
        ) -> wasm_bindgen::convert::WasmRet<
            <i32 as wasm_bindgen::convert::IntoWasmAbi>::Abi,
        > {
            use wasm_bindgen::__rt::{WasmRefCell, assert_not_null};
            use wasm_bindgen::convert::IntoWasmAbi;
            fn assert_copy<T: Copy>() {}
            assert_copy::<i32>();
            let js = js as *mut WasmRefCell<Input>;
            assert_not_null(js);
            let val = (*js).borrow().1;
            <i32 as IntoWasmAbi>::into_abi(val).into()
        }
    };
    #[allow(dead_code)]
    pub fn __pow(i__: String) -> String {
        let i: Input = bincode::decode_from_slice(
                i__.as_bytes(),
                bincode::config::standard(),
            )
            .unwrap()
            .0;
        let res = { i.0.pow(i.1 as u32) };
        String::from_utf8(
                bincode::encode_to_vec(&res, bincode::config::standard()).unwrap(),
            )
            .unwrap()
    }
    #[automatically_derived]
    const _: () = {
        pub unsafe extern "C" fn __wasm_bindgen_generated___pow(
            arg0_1: <<String as wasm_bindgen::convert::FromWasmAbi>::Abi as wasm_bindgen::convert::WasmAbi>::Prim1,
            arg0_2: <<String as wasm_bindgen::convert::FromWasmAbi>::Abi as wasm_bindgen::convert::WasmAbi>::Prim2,
            arg0_3: <<String as wasm_bindgen::convert::FromWasmAbi>::Abi as wasm_bindgen::convert::WasmAbi>::Prim3,
            arg0_4: <<String as wasm_bindgen::convert::FromWasmAbi>::Abi as wasm_bindgen::convert::WasmAbi>::Prim4,
        ) -> wasm_bindgen::convert::WasmRet<
            <String as wasm_bindgen::convert::ReturnWasmAbi>::Abi,
        > {
            let _ret = {
                let arg0 = unsafe {
                    <String as wasm_bindgen::convert::FromWasmAbi>::from_abi(
                        <<String as wasm_bindgen::convert::FromWasmAbi>::Abi as wasm_bindgen::convert::WasmAbi>::join(
                            arg0_1,
                            arg0_2,
                            arg0_3,
                            arg0_4,
                        ),
                    )
                };
                let _ret = __pow(arg0);
                _ret
            };
            <String as wasm_bindgen::convert::ReturnWasmAbi>::return_abi(_ret).into()
        }
    };
    pub async fn pow(i: Input, c: impl Fn(i32) + 'static) {
        let w = WrappedWorker::<Input, i32>::new("worker.js").await;
        w.run_task("__pow", i, c);
        w.destroy();
    }
}
#[rustc_main]
#[coverage(off)]
pub fn main() -> () {
    extern crate test;
    test::test_main_static(&[])
}