问题标签 [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.
go - 从 wasm 函数返回多个值
我有一个在本地运行并连接到 wasm 模块的 Golang TCP 服务器。目前,我可以从 wasm 函数返回一个值。通过这个博客,我注意到应该有可能返回多个值而不是一个。但是,在我的 Go TCP 服务器中,我没有从 wasm 函数中得到任何响应。
这就是我返回一个值的方式,它工作正常:
在 Go 服务器中:
以下是我如何尝试从 wasm 函数返回多个值:
在 Go 服务器中,我添加了以下代码行:
其余的和以前一样:
我使用命令编译了 wasm 模块cargo wasi build
,它编译得很好。但是,当向与 wasm 模块对话的 Go 服务器发送请求时,我收到一个错误,提示got 2 expected 3 arguments
. 我不明白第三个论点应该是什么。
rust - Rust wasm 将输入事件侦听器附加到元素
如何将input
事件侦听器添加到HtmlInputElement
/ HtmlTextAreaElement
。我正在使用web-sys
并阅读this,但是在此之后,我在闭包内使用的所有元素(在这种情况下尤其是input
元素)都被移动到闭包中,之后我无法附加侦听器。
具体来说,我得到:
unit-testing - 使用 WebAssembly 在 Rust 中进行单元测试
我正在WASM
使用seed
框架编写前端。
我想用单元测试测试我的一个模块,但我不能让它们测试WASM
代码。这是我的测试套件:
第一个测试通过,因为没有使用任何与WASM
. 另一个测试失败并出现以下错误:
如果我运行cargo make test --chrome
它,它甚至不会看到这些测试。
我尝试运行cargo test --target wasm32-unknown-unknown
,但失败并出现以下错误:
rustup
显示目标已安装:
我在这里想念什么?
wasm-bindgen - 如何在 wasm-bindgen 中使用引用类型
首先,我是 rust 和 webassembly 的新手。我想将引用类型与 wasm-bindgen 一起使用,遵循 wasm-bindgen 书籍Support for Reference Types中的示例
我尝试使用引用类型标志构建我的代码
但我收到以下错误
错误:找到了预期之外的参数“--reference-types”,或者在此上下文中无效
我已经安装了 1.55 版的 rustc 和 0.10.1 版的 wasm-pack。
我错过了什么吗?
url - `web_sys::Url::create_object_url_with_blob(&blob)` 未正确格式化二进制数据
我有以下代码:
当我点击链接时,下载的文件是写在 Word 文档中的一堆字节。
这些字节旨在表示 word 文档本身,而不是作为纯文本写入它。
这被编译为 wasm 并在浏览器中运行。
如果我将字节表示为 b64 编码文本并创建一个<a>
带有字符串 href 的元素,我会得到正确的表示
但这对于超过几 KB 的文件来说非常慢,并且随着更多文件的添加而变得更慢。
什么是正确的 Rust-> JS 转换以使用create_object_url_with_blob()
它以使其按预期运行?
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
先感谢您
rust - Rust wasm 模块构建错误(x11-clipboard 依赖)
最近我知道了 Web 组装,并且在生锈的情况下搞砸了。最终我遇到了构建问题。我的 toml 文件看起来像这样
当我想.wasm
用命令构建文件时,wasm-pack build --target web
我得到一堆这样的错误
我设法通过注释掉依赖来构建 wasm 模块x11-clipboard
。我尝试使用依赖项构建此模块,x11-clipboard
但在我注释掉xcb
依赖项之前它也失败了。如果我添加x11
板条箱,它也会失败。有一段时间我认为libc
这可能是一个问题,但我没有问题构建具有这种依赖关系的模块。
有谁知道为什么某些依赖项会导致构建过程失败以及如何修复它?如果无法修复,有人可以解释我为什么吗?提前致谢!
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 教程,但它们似乎都有点烂了。如果您曾经治愈过“无效渲染器”恐慌,我很想听听更多关于它的信息。
谢谢!
rust - Rust wasm:什么时候在使用 wasm_bindgen(constructor) 注释的 Rust X::new() 上调用 JS new X() 是合法的?
给定以下(简化的)Rust 代码:
使用 编译wasm-pack
,此建议来自wasm-bindgen书:
前面的声明让我相信,在 Promise 解决之前,进行任何与 rust-wasm 相关的调用都是非法的。
这提出了一个问题:这些陈述中哪一个是正确的?
new MyClassJs()
任何时候(甚至在 Promise 解决之前)调用是否合法?- 仅在 Promise 解决后调用是否合法
new MyClassJs()
(但在任何地方,包括then
回调之外? new MyClassJs()
只在回调内部调用是否合法then
?
我尝试使用这些资源找到答案,但发现它们不包含我的问题的答案:
- https://rustwasm.github.io/docs/book/
- https://rustwasm.github.io/docs/wasm-pack/
- https://rustwasm.github.io/wasm-bindgen/
编辑:我目前在 webpack 4 上。
javascript - 惊慌失措“无法检索 uuid 的随机字节:Node.js 加密模块不可用”
我正在 rust 中编写一些代码并将其编译为 wasm 以使用 lambda@edge 的 node.js 运行时运行它。我需要生成 uuid 作为此代码的一部分。我在 rust 中这样做,代码正在编译。但是当我运行时,它会抛出异常(并且在部署到 lambda 之前它在我的本地环境中,所以没有 AWS 环境问题)
这是我生锈的代码片段
我正在使用 uuid crate 作为
并且依赖项在这里
知道如何在此处继续创建 UUID 吗?