我有这个简单的Rust函数:
#[no_mangle]
pub fn compute(operator: &str, n1: i32, n2: i32) -> i32 {
match operator {
"SUM" => n1 + n2,
"DIFF" => n1 - n2,
"MULT" => n1 * n2,
"DIV" => n1 / n2,
_ => 0
}
}
Run Code Online (Sandbox Code Playgroud)
我正在成功地将其编译为WebAssembly,但是没有设法将operator参数从JS 传递给Rust.
调用Rust函数的JS行如下所示:
instance.exports.compute(operator, n1, n2);
Run Code Online (Sandbox Code Playgroud)
operator是JS String和n1,n2是JS Number秒.
n1并且n2正确传递并且可以在编译函数内部读取,所以我猜问题是我如何传递字符串.我想它是作为从JS到WebAssembly的指针传递,但无法找到有关其工作原理的证据或材料.
我没有使用Emscripten并希望将其保持独立(编译目标wasm32-unknown-unknown),但我看到它们将其编译的函数包装起来Module.cwrap,也许这可能会有所帮助?