问题标签 [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.
node.js - 在 Rust WASM Game of Life 教程中,无法让鼠标单击事件起作用
问题:似乎无法使鼠标单击切换事件起作用。点击时,一个活细胞应该变死,一个死细胞应该变活。
我已经在这个Github Repo中上传了 Rust/WASM Game of Life 教程项目,供那些想要找到问题的人使用。欢迎 PR。
不了解教程的小伙伴可以点击这里了解更多。
express - 从 express 服务器导入 WASM
最近我一直在使用 Rust WASM 进行编码并使用 wasm pack 进行编译。完成编码后,我将编译后的文件放入我的静态文件夹(我可以确认它们是静态的),并尝试将它们导入我的 HTML 文件中。我不断收到此错误:
我很困惑为什么我在请求中得到一个无效的 mime 类型,它清楚地表明 mimetype 是正确的。在github上搜索后,其他人也遇到了同样的问题。但这是 2018 年的一篇较旧的帖子,他们说它会以更新的版本发布,即我已经安装的版本。https://github.com/expressjs/express/issues/3589
这是我的锈代码:
和我的 HTML 代码:
我对为什么这不起作用感到困惑,并希望得到一些帮助。
提前致谢。
rust - 生成返回字符串的函数时,为什么 wasm-opt 在 wasm-pack 构建中失败?
调用文件中最简单的函数之一Universe.render
(它用于渲染表示游戏状态的字符串)。当我运行时它会导致错误wasm-pack build
:
如果我删除该函数,代码构建不会出错。如果我用以下函数替换它,构建将失败并出现相同的错误:
似乎任何返回 a 的函数都会String
导致此错误。为什么?
以下是我的全部代码:
只需删除render
此文件底部的函数即可使构建成功。render
用任何返回 a的函数替换该函数String
会导致构建失败。为什么?
rust - Rust Wasm Bindgen 返回对象但得到一个数字
今天在使用 wasm-bindgen 进行一些 rust wasm vs js 速度基准测试时,我遇到了一个问题。
我在一个名为gimmeDirections的简单函数中使用了这个结构, 如下所示:
将其编译到浏览器 javascript 中后,我查看了编译到其中的 .d.ts 文件,并注意到 gimmeDirections 函数返回了一个数字。
即使在 js 中,它在 JSDOC 中声明它返回了 XY 类,该类在编译代码中已定义。
这是课程:
在非常困惑之后,由于打字稿说它会返回一个数字但js说它会返回一个类,我决定运行它......并得到一个数字。
下面的对象是我的 javascript 函数,它为基准运行运行相同的代码,如您所见,我得到的是一个对象,而不是一个数字。
这是我的 JS 代码:
当我清楚地返回一个对象时,我仍然很困惑为什么它会返回一个数字。非常需要帮助,非常感谢
svg - 在 Seed Rust 应用程序中为 SVG 文本元素调用 getBBox
我刚刚使用 WASM 和Seed迈出了第一步,到目前为止这是一次非常顺利的体验。我能够使用svg!
, circle!
, text!
, ... 和类似的宏创建 SVG。为了以正确的方式生成我的 SVG,我必须测量文本。我的想法是生成 SVG 文本节点并在节点上调用getBBox。我发现 Seed 正在使用web_sys并且getBBox 在那里实现。
我的问题是如何从Node
created bytext!
到SvgTextElement。我试图访问该node_ws
字段,但它似乎是“空的”。它可能尚未创建,但我现在对 Seed 内部结构还不够了解。
那么如何创建一个 SVG 文本节点,以便在生成“主”SVG 节点之前对其调用 getBBox 呢?
node.js - WASM 中的环境检测:Web、Node.js 还是独立运行时?
运行 WebAssembly 模块的方式有很多种,除了 Web 之外,Node.js 可以加载 wasm 模块--experimental-wasm-modules
,独立运行时如 wasmtime 和 lucet 也可以运行它。
那么如何检测 WASM 中的当前环境,是否可以对 wasm 模块应用限制,使其只能在特定网站上运行?
rust - 使用 wasm-bindgen 对大型 rust 对象进行 Js 绑定
我想编写一个显示大型二进制文件内容的 vscode 扩展,用以下方式编写bincode
:
因此有一个 wasm 绑定:
它为 JavaScript 世界提供了一个简单的接口,以便访问该文件的内容。在 JavaScript 端处理时使用Arc
以防止昂贵的意外内存复制。keys
(未标记为可变但 rust 编译器推荐这种方式可能看起来很奇怪)
运行测试代码时:
您收到错误消息:
错误:传递给 rust 的空指针
有人知道如何处理这个用例吗?
谢谢!
rust - 如何在 Yew 应用程序中创建网格和单元格(使用 Rust 程序)
紫杉应用。
我正在尝试构建一个网格和内部网格我想在 Yew 应用程序中排列单元格。
- 我想让我的网格有一个 4*4 数组
- 单元格大小为 5px 宽度和高度
- 我还需要根据我在网格上解决的方法设置单元格颜色属性吗?
- 如何从 Grid 创建 Cell ?我可以使用 Yew 提供的 create 方法吗?
请就相同的组件结构提供建议。另外如何从网格中获取单元格的属性(颜色)并更改它
rust - `HashMap 没有实现特征`IntoWasmAbi`
尝试编译以下rust
代码以wasm
使其与现有 js 兼容运行。试图从函数返回哈希映射值。
库文件
运行命令后控制台错误wasm-pack build
有没有办法做到这一点?
go - 如何使用字符串作为参数从 Go 调用 Rust 函数?
我一直在尝试将字符串传递给 Rust 函数(编译为 Wasm),但是据我所知,现在无法直接传递字符串,因为“str”不是“FFI 世界”中的类型(至少 rust 编译器是这么说的):
= help: consider using `*const u8` and a length instead
所以我所做的就是将函数更改为这种形式(而不是使用简单的 &str 类型):
这意味着我需要一个指针和 u8 中字符串的长度。
但是,有人让我注意到 WASM 模块是沙盒的,因此它们不能像普通应用程序那样使用普通指针。因此,我必须使用这样的函数将内存分配到模块的线性内存中:
这是一个 JS 函数的例子,它使用了这样的 alloc 函数:
我的问题是我不知道如何将此函数转换为 Go,这是因为我被困在“var mem”行,原因如下:
- 我在 Go 中找不到“instance.exports.memory.buffer”的等价物(实例是“*wasmtime.Instance”类型)。
- 我不知道如何去做 Unit8Buffer 在 Go 中所做的事情。
关于 Wasm 内存的好读物:(https://radu-matei.com/blog/practical-guide-to-wasm-memory/#exchang-strings-between-modules-and-runtimes)