问题标签 [wasm-bindgen]

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 回答
56 浏览

rust - 特征 `rayon::iter::ParallelExtend` 没有为`std::vec::Vec 实现`

我正在尝试将Roliz 的网络爬虫博客文章)转换为 WASM,以进行浏览器内或基于 Deno 的端点爬取。

这是我的实现:

货运.toml

库文件

操场。完整的错误信息是:

我正在使用 rust 版本:1.45.0-nightly (4bd32c980 2020-05-29)


我哪里错了?

0 投票
1 回答
58 浏览

wasm-bindgen - 如何从 rust 访问 web_sys::CustomEvent.detail 数据

拥有生成https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.CustomEvent.html的代码。

记录event.detail()结果:{index: 1}。这是 type JsValue,但是如何在 rust 中获取整数 1 值?

一种方法可能是 https://rustwasm.github.io/docs/wasm-bindgen/reference/iterating-over-js-values.html 其他更好的方法?

0 投票
1 回答
300 浏览

rust - `*arg0` 寿命不够长 - wasm_bindgen

运行以下代码时:

货运.toml

库文件

我收到以下错误:

*arg0活得不够长
借来的价值 活得不够长 论据要求*arg0借来'static

0 投票
1 回答
227 浏览

javascript - 在 WASM-Bindgen Rust 中使用鼠标输入事件上的闭包创建回调时闭包调用错误

我有一个从WASM-Bindgen "canvas" 示例派生的 Rust 程序。我试图在元素的每个 JavaScriptonmousemove事件上调用一些 Rust 代码。Canvas我的代码当前成功创建了 DOM 事件(看起来)。但是,在每个触发的事件中,Firefox 开发者版开发者工具的控制台都会显示一个错误:

Uncaught Error: closure invoked recursively or destroyed already

这是我的代码的一部分:

0 投票
1 回答
736 浏览

rust - 没有预建的 wasm-opt 二进制文件

我正在尝试在我的树莓派 (3b) 上构建一些 webassembly rust 应用程序。一切顺利,虽然我在运行时遇到错误wasm-pack

似乎没有wasm-opt为我的(armv71)平台找到二进制文件。但是从这里克隆它们并自己构建它们似乎很容易。

但我的问题是如何将它们添加到 webassembly,以便找到它们?

编辑:要清楚,构建“成功”完成,即我可以运行包。但是,我想使用的大小或速度优化wasm-opt

0 投票
0 回答
687 浏览

javascript - 如何使用 --target no-modules 导入带有 wasm-bindgen 的 JavaScript 函数?

我正在尝试研究如何使用 Rust 和 wasm-bindgen 调用 JavaScript 函数。由于缺乏浏览器支持,我无法将 wasm-bindgen 与 ES6 模块与 Web Worker 一起使用。

据我所知,在 Rust 端声明存在供我调用的 JavaScript 函数很简单

但是,我不知道在哪里定义 JavaScript 实现。如果我尝试从 JavaScript 调用未定义的 Rust 函数,logProgress那么我会收到运行时错误:Error: logProgress is not defined

我可以从 wasm-bindgen 文档中看到,如果我将 wasm-bindgen 与 ES6 模块一起使用,那么我可以将 rust 代码更改为

并在其中声明 JavaScript 函数progress.js

由于我改为通过wasm_bindgen全局导入我的 Rust API,我认为我应该能够在我的 Web Worker 的同一部分附近的某个地方定义实现,但我已经搜索了很多文档并且找不到任何关于如何做这个。

0 投票
1 回答
61 浏览

wasm-bindgen - wasm-bindgen - 可以识别构建版本/日期吗?

对于 web 应用程序,开发循环 [更改 -> 构建 -> 部署 -> 测试] 是非常迭代的。由于浏览器缓存容易错误构建版本。因此,经常需要确定构建版本。

wasm-bindgen/是否wasm-pack提供了一些宏,例如Timestamp转储到日志文件中,以识别构建的版本?

类似的东西:log(BUILD_DATE)=>"2020:09:12 09:37:12"

0 投票
1 回答
212 浏览

rust - 在 wasm-bindgen 中扩展 AudioWorkletProcessor?

有关如何rust -> wasm使用 wasm-bindgen 在流程中使用现有 javascript Web 系统的文档非常简单。简而言之:

  1. 将所需的功能列为依赖项
  1. 通过 web_sys 访问,并从那里正常对待它们。

链接到完整示例


虽然这种方法适用于大多数 Web 系统,但对于需要您扩展类的系统来说并不那么简单。在这种情况下,我正在尝试使用AudioWorkletProccessorwasm-bindgen

在标准用法中,您应该扩展AudioWorkletProcessor类,然后注册它。MDN 示例


我该如何解决这个问题?首先我需要AudioWorkletProcessor在 Rust 中扩展(它不做普通的类和继承),覆盖它的process()功能。然后我需要确保registerProcessor()注入到我的生锈空间。


编辑:关于扩展的 WASM 文档

0 投票
1 回答
721 浏览

postgresql - rust-lld:错误:找不到库 -lpq

我正在尝试使用 Yew、Diesel 和 Postgres 构建一个简单的 Web 应用程序。当我跑

我收到以下错误:

我在 macOS Catalina 上。我通过 Homebrew 安装了 Postgres。我的libpq.dylib文件位于/usr/local/lib.

这些是我已经尝试过的故障排除:

  1. 添加/usr/local/lib$PATH. 我的pg_config节目LIBDIR = /usr/local/lib
  2. 重新安装 Postgres
  3. 更新rustc -nightly

这里的想法也没有帮助:如何通过 wasm-pack 将 Rust Wasm 应用程序与 libpq 链接?

仍然没有解决。我会很感激任何建议。

0 投票
1 回答
171 浏览

javascript - 如何获取从 wasm (rust) 到 js 的静态 mut 的地址?

我有一个 rust-wasm 项目,我需要在 webassembly 中填充一个缓冲区,然后再将其传递给我的 js 脚本,然后用画布显示它。

(受本文启发)

但是 rust 中的静态 mut 是不安全的,所以我不能用#[wasm_bindgen]

如何在我的 js 脚本中获取此静态缓冲区的地址?

编辑 :

我已经看到了这个解决方案:

我真的不明白这段代码中发生了什么,我不能使用它,因为我使用了 wasm-pack 构建工具:它为我创建了与 wasm 文件对应的 .js 文件,但我仍然无法得到缓冲区地址。

任何帮助,将不胜感激