#[cfg(target_family = "wasm")]
pub(crate) mod transfer;
#[cfg(target_family = "wasm")]
pub(crate) mod transfer_closure;
#[macro_export]
macro_rules! transfer {
(|| $block:block) => {{
#[cfg(not(target_family = "wasm"))]
{ move || $block }
#[cfg(target_family = "wasm")]
{
$crate::for_generated::TransferClosure::new(vec![], vec![], move |_: &[wasm_bindgen::JsValue]| $block)
}
}};
(|$($param:ident: $ty:ty),*| $block:block) => {{
#[cfg(not(target_family = "wasm"))]
{
move || $block
}
#[cfg(target_family = "wasm")]
{
use $crate::web_transfer::transfer::Transfer;
#[allow(unused_variables)]
let worker = move |transfer: &[wasm_bindgen::JsValue]| {
let idx = 0;
$(
let $param = <$ty>::deserialize(&transfer[idx]);
let idx = idx + 1;
)*
$block
};
let transferables = [$($param.transferables()),*].concat();
$crate::for_generated::TransferClosure::new(vec![$($param.serialize()),*], transferables, worker)
}
}};
}