Wasm-bindgen: массивы u8 в качестве входов и выходов, сгенерированные javascript, имеют различные сигнатуры функций - PullRequest
2 голосов
/ 11 февраля 2020

Я написал функцию, которая принимает массив 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-pack ed функции соответствовали определениям функции rust?

1 Ответ

3 голосов
/ 11 февраля 2020

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

...