Wasm-bindgen: массивы u8 в качестве входных и выходных данных, сгенерированный javascript имеет разные сигнатуры функций

Я написал функцию, которая принимает массив 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+javascript с помощью wasm-pack.

В качестве вывода я получаю следующие определения машинописных функций:

export function ab(a: number, b: number): number;
export function __wbindgen_malloc(a: number): number;

Какими будут два входных числа для ab()? Как следует использовать эти функции?

Кроме того, есть ли лучший способ выделить память wasm напрямую из Rust, чтобы определения функций wasm-packed соответствовали определениям функций rust?


person Nicolas Marshall    schedule 11.02.2020    source источник


Ответы (1)


wasm_bindgen генерирует два файла JS. Вы просматриваете файл <name>_bg.js, который предоставляет «сырые» привязки к модулю webassembly, где аргументы являются указателями. Он также должен был сгенерировать файл <name>.js, в котором есть функции, использующие ожидаемые типы JS.

person apetranzilla    schedule 11.02.2020