如何将闭包转换为 js_sys::Function?

Hos*_*our 11 rust webassembly wasm-bindgen

如何将本地闭包转换为js_sys::Function

我想做这样的事情:

let canvas = document.get_element_by_id("canvas").unwrap();
let e: web_sys::HtmlElement = canvas.dyn_into().unwrap();
let f = || {};
e.set_onresize(Some(&f.into()));
Run Code Online (Sandbox Code Playgroud)

Hos*_*our 9

我在这里找到了解决方案:

let f = Closure::wrap(Box::new(move || { /* whatever */}) as Box<dyn FnMut()>);
e.set_onresize(Some(f.as_ref().unchecked_ref()));
f.forget(); // It is not good practice, just for simplification!
Run Code Online (Sandbox Code Playgroud)

  • @mallwright,答案已经过时,我认为整个过程已经改变。 (2认同)
  • @HosseinNoroozpour 你有博客链接或一些例子吗?据我所知,自 2020 年以来,API 的人体工程学只发生了一些变化。 (2认同)