标签: wasm-bindgen

什么是 aa 元组变体?(了解编译器错误消息)

使用wasm_bindgenwith serde,我尝试JsValue使用惯用的 rust 返回一个复杂的结构。我创建了一个单独的示例来说明我所看到的错误。

结构声明:

#[derive(Serialize)]
pub struct BookStoreData {
    pub h: HashMap<String, String>,
    pub name: String,
}
Run Code Online (Sandbox Code Playgroud)

函数定义:

#[wasm_bindgen]
pub fn hello_hash(count: i32) -> Result<JsValue, JsValue> {
    set_panic_hook();
    let mut book_reviews = HashMap::new();

    book_reviews.insert(
        "Grimms' Fairy Tales".to_string(),
        "Masterpiece.".to_string(),
    );
    let data = BookStoreData {
        h: book_reviews,
        name: "My Book Store".to_string(),
    };

    let js_result: JsValue = JsValue::from_serde(&data).unwrap();

    OK(js_result)    

}
Run Code Online (Sandbox Code Playgroud)

我收到此编译错误:

error[E0425]: cannot find function `OK` in this scope
  --> src/hello_whatever.rs:46:5
   |
46 |     OK(js_result)    
   | …
Run Code Online (Sandbox Code Playgroud)

rust wasm-bindgen

1
推荐指数
1
解决办法
4682
查看次数

wasm-bindgen、asm.js 和 Emcripten 之间有什么区别?

我正在努力让 webpack 处理一组使用 wasm-bindgen 编译的WebAssembly 文件

即使这可能只是 webpack 的一个问题,它也让我意识到我没有完全掌握这些古怪的 WebAssembly 工具之间的差异。

emscripten asm.js webpack webassembly wasm-bindgen

1
推荐指数
1
解决办法
1108
查看次数

wasm-bindgen:即使安装了 wasm-pack,也找不到命令(0.8.1)

从这篇文章https://asquera.de/blog/2018-10-01/web assembly- and-wasm-bindgen/ 我发现我们可以运行wasm-bindgen target/wasm32-unknown-unknown/release/qr_wasm.wasm --out-dir ./dist --no-modules --no-typescript来创建 wasm 和 js 文件而不运行wasm-pack build(它会安装 wasm-bindgen 无论我是否以前安装过一个,使它有点慢)这对我来说似乎更灵活,但当我运行时wasm-bindgen xxx它说:zsh: command not found: wasm-bindgen

我用谷歌搜索了一下,但似乎没有人遇到过这个问题。我的项目中还有cargo installwasm-bindgen 和 wasm-bindgen-cli 。

wasm-bindgen wasm-pack

1
推荐指数
1
解决办法
4582
查看次数

如何从 Wasm 内存缓冲区读取元组结构?

我定义了一个元组结构:

pub struct ChangedCell(pub bool, pub u32, pub u32);
Run Code Online (Sandbox Code Playgroud)

我的假设

ChangedCell重 9 个字节(bool:1 个字节,u32:4 个字节,u32:4 个字节)

我做了什么

我向 JavaScript返回了一个pointer, lengthfor :Vec<ChangedCell>

pub struct ChangedCell(pub bool, pub u32, pub u32);
Run Code Online (Sandbox Code Playgroud)
const arr = new Uint8Array(memory.buffer, pointer, length * 9);
Run Code Online (Sandbox Code Playgroud)

预期行为

  • isVal成为valid [byte]
  • val1成为valid [byte] * 4
  • val2成为valid [byte] * 4

问题

I am getting Garbage values! 如何将这样的内容读入 JavaScript 中?

rust webassembly wasm-bindgen

1
推荐指数
1
解决办法
572
查看次数