问题标签 [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 投票
1 回答
315 浏览

rust - 从 Rust 的 WebAssembly 中的 Window 对象获取查询字符串

背景:我正在学习 Rust 和 WebAssembly,作为一个练习练习,我有一个项目可以从 Rust 代码中用 HTML Canvas 绘制东西。我想从 Web 请求中获取查询字符串,然后代码可以从那里决定调用哪个绘图函数。

我编写了这个函数来返回?删除前导的查询字符串:

它确实有效,但考虑到在我使用的其他一些语言中它会简单得多,它似乎非常冗长。

有没有更简单的方法来做到这一点?或者冗长只是你为 Rust 的安全性付出的代价,我应该习惯它?

根据@IInspectable 的答案进行编辑:我尝试了链接方法,但出现以下错误:

最好能更好地理解这一点;我仍然通过我的头脑获得所有权的细节。就是现在:

这当然是一种改进。

0 投票
1 回答
75 浏览

rust - 如何使用 Rust js_sys 获取浏览器的本地时区?

我正在使用js_syscrate 在浏览器中运行一些 Rust 代码。

难以理解如何使用Intl::DateTimeFormat

我想要的只是获取本地时区,这是用这个 JS 代码完成的:

这似乎在 Rust 中不起作用:

似乎希望我创建一个新DateTimeFormat结构,但我只想获得“默认”结构,如果有这样的事情......

我怎样才能让它工作?

0 投票
2 回答
1154 浏览

rust - 如何使用 web_sys 从 Rust 创建一个 JS 字符串数组?

我正在尝试使用一个 Web API,它包含一个接受来自 Rust 的字符串数组的方法。

我正在使用 web_sys 与 JS API“对话”,但我找不到将静态字符串数组传入其中的方法。

不幸的是,在 Rust 中,参数的类型被错误地声明为arg: &JsValue,所以我可以将任何东西传递给它,它仍然可以编译,但会在浏览器中崩溃。

如何在 Rust 中创建一个可以用作 的字符串数组&JsValue

0 投票
0 回答
622 浏览

rust - 创建 React App 导入 Wasm 到 Web Worker

我正在使用 wasm-bindgen 和一个 react 应用程序(使用 create-react-app 创建),我想将一个 wasm 模块导入到 web worker 中。

我正在使用这个例子,只是为了开始。

为了在“主线程”上使用 wasm,我设置了 react-app-rewired,这里是 config-overrides.js:

在主线程上,我可以导入 wasm 并在本地 npm 链接之后像这样使用它(没有发布任何 npm 模块):

我读到您应该在主线程中编译 wasm 模块,然后将其 postMessage 到线程,所以我尝试了以下操作:

这给了我以下错误:

我也尝试了正常的导入命令:

我收到以下错误:

有什么我可以添加到 webpack.config 以使其工作的吗?什么是正确的设置?

0 投票
1 回答
227 浏览

rust - 编译为 Wasm 时,指向堆分配内存的 Rust 指针可以为 0 吗?

在编译为 Wasm 的 Rust 代码中堆分配内存时,会分配 Wasm 线性内存中的内存。

我是否正确理解指针的值是该内存中的偏移量?如果是,是否可以将值0作为偏移量/指针获取并且有效?

一个简单的例子是:

我可以假设data_ptr它是非零的还是一个有效的地址?

0 投票
1 回答
2025 浏览

git - 无法将文件夹 www 添加到 github 存储库

我创建了一个 rustwasm 项目,如下所示:

我在www文件夹中做了一些工作,但是每当我尝试提交到 github 时,它都不会添加www文件夹。
我已经检查了 git ignores 并且它在任何地方都没有被忽略。有谁知道为什么它不会被添加?

这就是我所遵循的。

输出git status

0 投票
1 回答
158 浏览

rust - NEAR 跨合约调用异常如何处理?

如何在合约之间的异步调用链中捕获和处理异常?

假设我的事务发起了以下调用:

在 Promise 中发生异常后,NEAR 不会回滚过去 Promise 中发生的更改。我也没有在near-sdk中看到任何处理异常的方法。

一个想法是返回错误而不是抛出异常并创建一堆私有函数来更新错误值后的状态并添加/释放互斥锁。然而,这并不能解决有时我们无法控制的问题,例如在外部智能合约中(例如,如果contractB.do在上面的示例中会出现恐慌)。

0 投票
1 回答
67 浏览

rust - 在近协议合约的函数中返回多个值

我正在尝试在近协议智能合约中返回两个变量

Javascript代码:

它给出了一个错误

另外,是否可以直接返回 struct ?例如

它也给出了错误:

0 投票
1 回答
412 浏览

rust - 如何使 Rust Game of Life WebAssembly 作为静态网站运行?

我已经阅读了 Rust Game of Life 的教程,并且在 Web 浏览器中有一个可以运行的游戏,但它只能在与它捆绑的演示 Web 服务器上运行。我可以启动服务器,npm start它在端口 8080 上运行 webpack-dev-server。当我通过该端口访问该站点时,它工作正常。但是,如果我尝试将该站点复制到 Apache 之类的 Web 服务器,它就无法正确加载。我目前从中得到的错误是:

在教程中,网站的根目录是www/存储库中调用的文件夹,并且从 Rust 程序生成的 wasm 模块放置在pkg/. 有一个符号链接www/node_modules/wasm-game-of-life../../pkg/我已经用顶级pkg/文件夹的实际副本替换了该符号链接,以便网站完全包含在www/文件夹中,然后将该文件夹放在我的网站上http:// www.north-winds.org/gol/但是,访问它会返回上述错误。我需要修改什么才能使其独立工作?

据我了解,这个 WebAssembly Game-of-Life 基本上是一个独立的客户端应用程序,除了可以提供带有适当 mime 类型的静态文件的 Web 服务器之外,不需要任何东西。我看不出有什么特别的要求。我确实在某处看到提到 WebSockets,但我不知道为什么这个应用程序需要这样做。我将此与来自https://webassembly.org/的 C 的“Hello, World”WebAssembly 示例进行了比较,最终得到了一个.wasm从 C 源代码生成的文件,以及一个用于执行它的 JavaScript 和 HTML 支持文件。当简单地复制到静态 Web 服务器位置时,这些文件可以正常工作。这就是我想要的 Rust 示例。

Rust Game-of-Life 中的一些相关代码如下。顶级 HTML 文件包括以下几行:

引导 JavaScript 文件仅包含以下内容:

它引用的 index.js 文件在 Wasm 的其他粘合逻辑中包含以下内容:

使这项工作独立起来缺少什么?

0 投票
1 回答
103 浏览

rust - 为什么我在防锈闭合时出现终身错误

我正在测试一些 rust wasm 功能,并且在关闭时遇到了一些问题。我实现了这个函数,它在按钮点击事件上设置回调。

ws.send rpc 的第三个参数是

并且 add_event_listener 有这个签名

当我尝试编译代码时,我得到了终身错误