javascript - Wasm-bindgen:u8数组作为输入和输出,生成的javascript具有不同的函数签名

标签 javascript arrays rust webassembly wasm-bindgen

我编写了一个函数,它接受 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-packed 函数定义与 rust 函数定义匹配?

最佳答案

wasm_bindgen生成两个JS文件。您正在查看 <name>_bg.js文件,它公开了 WebAssembly 模块的“原始”绑定(bind),其中参数是指针。它还应该生成 <name>.js文件,其中包含使用预期 JS 类型的函数。

关于javascript - Wasm-bindgen:u8数组作为输入和输出,生成的javascript具有不同的函数签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60171056/

相关文章:

rust - 如何在 Rust 的向量中对连续整数进行分组?

macros - __impl 在宏模式中的意义是什么?

javascript - add_commas 函数不适用于 10000 但 1000

php - 如何将 PHP 数组参数传递给 Javascript 函数?

php - mysql好友在线显示

java - 如何修改我的方法以在 O(N) 或 O(N * log N) 中搜索然后删除重复项?

git - 如何在 Cargo 中使用相对的 git 子模块路径?

javascript - AngularJS 阻止 symfony2 表单中的提交按钮

javascript - 通过子数组过滤对象

c++ - 需要帮助在循环/数组程序 C++ 中显示值