Notes on Writing WASM
2 months ago
- #Rust
- #wasm-bindgen
- #WebAssembly
- 作者分享了使用wasm-bindgen改进基于Rust的Wasm开发的模式。
- 关键建议包括:通过引用传递所有内容、使用Rc<RefCell<T>>或Arc<Mutex<T>>、以及避免在导出类型上使用Copy特性。
- 为Rust导出类型添加'Wasm*'前缀,为JS导入类型添加'Js*'前缀,有助于区分它们。
- 避免在导出类型上派生Copy特性,以防止句柄的意外复制。
- 优先通过引用传递,以避免JS侧的句柄损坏。
- 建议对集合(如Vec)中跨越边界的数据类型使用wasm_refgen工具。
- 使用js_sys::Error将Rust错误转换为JsValue,以便在JS侧实现更好的错误处理。
- 在启动时打印构建信息(版本号、Git哈希值)有助于调试和开发。