我编写了一个函数,它接受 u8 数组作为输入并输出 Uint8Array
use js_sys::Uint8Array;
#[wasm_bindgen]
pub extern "C" fn ab(seed: &[u8]) -> Uint8Array {
let array: Array = seed.into_iter().map(|x| JsValue::from(*x as u8)).collect();
let u8a = Uint8Array::new(&array);
u8a
}
然后使用 wasm-pack
将其构建到 wasm+javascript 中。
作为输出,我得到以下 typescript 函数定义:
export function ab(a: number, b: number): number;
export function __wbindgen_malloc(a: number): number;
ab() 的两个输入数字是多少?这些功能应该如何使用?
此外,是否有更好的方法直接从 Rust 分配到 wasm 内存,以便 wasm-pack
ed 函数定义与 rust 函数定义匹配?
最佳答案
wasm_bindgen
生成两个JS文件。您正在查看 <name>_bg.js
文件,它公开了 WebAssembly 模块的“原始”绑定(bind),其中参数是指针。它还应该生成 <name>.js
文件,其中包含使用预期 JS 类型的函数。
关于javascript - Wasm-bindgen:u8数组作为输入和输出,生成的javascript具有不同的函数签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60171056/