问题标签 [rust-wasm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
207 浏览

go - 从 wasm 函数返回多个值

我有一个在本地运行并连接到 wasm 模块的 Golang TCP 服务器。目前,我可以从 wasm 函数返回一个值。通过这个博客,我注意到应该有可能返回多个值而不是一个。但是,在我的 Go TCP 服务器中,我没有从 wasm 函数中得到任何响应。

这就是我返回一个值的方式,它工作正常:

在 Go 服务器中:

以下是我如何尝试从 wasm 函数返回多个值:

在 Go 服务器中,我添加了以下代码行:

其余的和以前一样:

我使用命令编译了 wasm 模块cargo wasi build,它编译得很好。但是,当向与 wasm 模块对话的 Go 服务器发送请求时,我收到一个错误,提示got 2 expected 3 arguments. 我不明白第三个论点应该是什么。

0 投票
2 回答
271 浏览

rust - Rust wasm 将输入事件侦听器附加到元素

如何将input事件侦听器添加到HtmlInputElement/ HtmlTextAreaElement。我正在使用web-sys并阅读this,但是在此之后,我在闭包内使用的所有元素(在这种情况下尤其是input元素)都被移动到闭包中,之后我无法附加侦听器。

具体来说,我得到:

0 投票
0 回答
96 浏览

unit-testing - 使用 WebAssembly 在 Rust 中进行单元测试

我正在WASM使用seed框架编写前端。

我想用单元测试测试我的一个模块,但我不能让它们测试WASM代码。这是我的测试套件:

第一个测试通过,因为没有使用任何与WASM. 另一个测试失败并出现以下错误:

如果我运行cargo make test --chrome它,它甚至不会看到这些测试。
我尝试运行cargo test --target wasm32-unknown-unknown,但失败并出现以下错误:

rustup显示目标已安装:

我在这里想念什么?

0 投票
0 回答
106 浏览

wasm-bindgen - 如何在 wasm-bindgen 中使用引用类型

首先,我是 rust 和 webassembly 的新手。我想将引用类型与 wasm-bindgen 一起使用,遵循 wasm-bindgen 书籍Support for Reference Types中的示例

我尝试使用引用类型标志构建我的代码

但我收到以下错误

错误:找到了预期之外的参数“--reference-types”,或者在此上下文中无效

我已经安装了 1.55 版的 rustc 和 0.10.1 版的 wasm-pack。

我错过了什么吗?

0 投票
1 回答
43 浏览

url - `web_sys::Url::create_object_url_with_blob(&blob)` 未正确格式化二进制数据

我有以下代码:

当我点击链接时,下载的文件是写在 Word 文档中的一堆字节。
这些字节旨在表示 word 文档本身,而不是作为纯文本写入它。
这被编译为 wasm 并在浏览器中运行。
如果我将字节表示为 b64 编码文本并创建一个<a>带有字符串 href 的元素,我会得到正确的表示

但这对于超过几 KB 的文件来说非常慢,并且随着更多文件的添加而变得更慢。
什么是正确的 Rust-> JS 转换以使用create_object_url_with_blob()它以使其按预期运行?

0 投票
1 回答
131 浏览

rust - oxipng throwing RuntimeError: unreachable when called

我正在尝试创建一个用于图像压缩的小型 WASM 项目。

在 github 中搜索后,我注意到 oxipng 2.2.2 有一个目标wasm32-unknown-unknown,因此我使用它。

我正在使用wasm-pack目标创建 wasm 文件 + JS 绑定-t web

这是代码:

我从来没有收到错误消息,我拥有的最后一个日志是“选项之后”。

简而言之,我使用的是 Flutter Web 应用程序,它获取 PNG 文件,将其转换为Uint8List,然后将其作为整数 List 发送到 JS 绑定。

调用时,会发生以下错误:

由于这个版本很旧,我不知道我是否应该恢复到旧版本的 Rust

先感谢您

0 投票
0 回答
77 浏览

rust - Rust wasm 模块构建错误(x11-clipboard 依赖)

最近我知道了 Web 组装,并且在生锈的情况下搞砸了。最终我遇到了构建问题。我的 toml 文件看起来像这样

当我想.wasm用命令构建文件时,wasm-pack build --target web我得到一堆这样的错误

我设法通过注释掉依赖来构建 wasm 模块x11-clipboard。我尝试使用依赖项构建此模块,x11-clipboard但在我注释掉xcb依赖项之前它也失败了。如果我添加x11板条箱,它也会失败。有一段时间我认为libc这可能是一个问题,但我没有问题构建具有这种依赖关系的模块。

有谁知道为什么某些依赖项会导致构建过程失败以及如何修复它?如果无法修复,有人可以解释我为什么吗?提前致谢!

0 投票
0 回答
182 浏览

rust - Rust、SDL2、Emscripten 和“无效渲染器”恐慌

似乎 Rust、SDL2 和 Emscripten 的组合是一些人在过去的不同点上所做的工作。

https://github.com/Rust-SDL2/rust-sdl2/issues/884

我有一个让我有点难过的问题。当谈到 Rust 时,我是一个完全的新手,所以我不能忽视这个因素。我借用了一个小程序:

https://puddleofcode.com/story/definitive-guide-to-rust-sdl2-and-emscriptem

...稍加哄骗,我就可以用 编译--target=asmjs-unknown-emscripten,但是在 Firefox 中运行时,我在控制台中收到一条消息:

线程“主”在“无效的渲染器”时惊慌失措,/home/blah/.cargo/registry/src/github.com-blah-blah/sdl2-0.35.1/src/sdl2/render.rs:990:13

...如果您查看第 990 行render.rs,它在 中具有明显的恐慌:

...有关如何初始化 SDL 和创建渲染器的详细信息如下所示:

...上述运行没有问题。我所知道的是,该程序在编译为 Linux 本机应用程序时按预期工作。而且我还知道我的 Emscripten 安装正在运行,因为我可以创建在浏览器中运行的 C++ 和 SDL2 应用程序。只有在处理图形系统时才会出现恐慌。Rust->asmjs 应用程序中的事件循环用于获取鼠标和键盘事件。最小可重现示例的源文件位于:

https://gist.github.com/gregbuchholz/7d731191fcea95b7450859aeb0f4eb20

...(包括 main.rs、Cargo.toml 等文件)。恐慌发生在 main.rs 的第 68 行:

...有人对如何调试这个有想法吗? Println!()调试通常似乎是这里的游戏名称,但目前各种“渲染器”对象不支持调试 fmt。(添加这可能是下一步)。

感兴趣的版本:

那里有各种 rust/emscripten/sdl2 教程,但它们似乎都有点烂了。如果您曾经治愈过“无效渲染器”恐慌,我很想听听更多关于它的信息。

谢谢!

0 投票
0 回答
38 浏览

rust - Rust wasm:什么时候在使用 wasm_bindgen(constructor) 注释的 Rust X::new() 上调用 JS new X() 是合法的?

给定以下(简化的)Rust 代码:

使用 编译wasm-pack,此建议来自wasm-bindgen书:

前面的声明让我相信,在 Promise 解决之前,进行任何与 rust-wasm 相关的调用都是非法的。

这提出了一个问题:这些陈述中哪一个是正确的?

  1. new MyClassJs()任何时候(甚至在 Promise 解决之前)调用是否合法?
  2. 仅在 Promise 解决后调用是否合法new MyClassJs()(但在任何地方,包括then回调之外?
  3. new MyClassJs()只在回调内部调用是否合法then

我尝试使用这些资源找到答案,但发现它们不包含我的问题的答案:

编辑:我目前在 webpack 4 上。

0 投票
0 回答
83 浏览

javascript - 惊慌失措“无法检索 uuid 的随机字节:Node.js 加密模块不可用”

我正在 rust 中编写一些代码并将其编译为 wasm 以使用 lambda@edge 的 node.js 运行时运行它。我需要生成 uuid 作为此代码的一部分。我在 rust 中这样做,代码正在编译。但是当我运行时,它会抛出异常(并且在部署到 lambda 之前它在我的本地环境中,所以没有 AWS 环境问题)

这是我生锈的代码片段

我正在使用 uuid crate 作为

并且依赖项在这里

知道如何在此处继续创建 UUID 吗?