我希望有一个WebAssembly函数(从Rust编译而来),它可以将JavaScript
我正在使用wasm-bindgen将WebAssembly结构导出到JavaScript,但我不知道如何在WebAssembly内部使用JavaScript的
以下是我想要Rust源代码样式的简化版本:
这是我在JavaScript环境下想要做的事情:
我希望上述代码末尾的
如何通过导入
Buffer
作为参数并写入数据到该buffer中。然后我想能够使用这个buffer并从JavaScript上下文与数据交互。我正在使用wasm-bindgen将WebAssembly结构导出到JavaScript,但我不知道如何在WebAssembly内部使用JavaScript的
Buffer
。以下是我想要Rust源代码样式的简化版本:
struct Element {
a: u8,
b: String,
}
impl Element {
fn new(a: u8, b: &str) -> Element {
Element {
a: a,
b: String::from(b),
}
}
fn copy_into(&self, buffer: Buffer) {
let mut offset = 0;
buffer[offset] = self.a;
offset += std::mem::size_of::<u8>();
buffer[offset] = self.b;
}
}
这是我在JavaScript环境下想要做的事情:
// Code for importing Element and instantiating the wasm module omitted.
let element = new Element(1, 'abc');
let buffer = Buffer.allocUnsafe(4);
element.copy_into(buffer);
console.log(buffer.toString('hex'));
我希望上述代码末尾的
console.log
能够打印出'01616263'。我希望在WebAssembly中不需要分配新内存并复制内容的情况下实现此操作。相反,我想直接写入JavaScript内存,其中buffer
是指向该内存的指针。如何通过导入
Buffer
到Rust来实现这一目标?
copy_into
的?您是否建议我,而不是将缓冲区作为参数,仅在Wasm中返回值,例如Array,然后在JS侧将其复制到缓冲区中? - Jacob Bohlin