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

c# - WinUI ProgressRing 不显示在 WASM (Uno 2.4) 上

我正在尝试添加新的 WinUI 2.4 ProgressRing。它在 UWP 应用程序上完美运行,但在 WASM 中不显示。

我的 App.xaml 和 Mainpage.xaml 是:

应用程序.xaml:

MainPage.xaml:

在 UWP 中完美运行: 在此处输入图像描述

这里没有任何 ProgressRing 可用,与 UWP 不同。

在此处输入图像描述

如Uno Platform 2.3 博客文章中所述,ProgressRing 在 WASM 上不可用,就像在 UWP 上一样。它应该是。

Nuget 包版本:

  • Uno.UI.RemoteControl {2.4.0}
  • Uno.Wasm.Bootstrap {1.2.0}
  • Uno.Wasm.Bootstrap.DevServer {1.2.0}
  • Microsoft.Extensions.Logging.Filter {1.1.2}
  • Microsoft.Extensions.Logging.Con... {1.1.1}
  • NETStandard.Library {2.0.3}
  • Uno.UI {2.4.0}
  • Microsoft.NETCore.UniversalWindo... {6.2.10}
  • Microsoft.Extensions.Logging.Con... {1.1.1}
  • Microsoft.Extensions.Logging.Filter {1.1.2}
  • Microsoft.UI.Xaml {2.4.0}
  • Uno.Core {2.0.0}

我怎样才能解决这个问题 ?谢谢。

0 投票
0 回答
60 浏览

rust - 如何从闭包中访问“this”?

我正在传递一个 Rust 闭包,它充当 JavaScript API 的回调函数,wasm-bindgen. API 将信息存储在this可以在回调中访问的关键字中。

如何访问this我的 Rust 闭包代码中指向的对象?

0 投票
1 回答
358 浏览

rust - 如何使用 Wasm-Bindgen Web_sys Wasm-pack 将字符串从 Js 传递到通过 Rust 生成的 Wasm

代码是基本的,我从 js 调用一个函数,它带有一个在 lib.rs 中声明的字符串输入,但是该字符串没有传递给 wasm 中的函数我收到一个空字符串,反向也不起作用我不是也可以将字符串从 wasm 传递给 js。

wasm 文件看起来像这样

js 看起来这个 wasm 已经成功启动了其他功能工作正常

货物 toml 看起来像这样

0 投票
0 回答
208 浏览

c# - 自定义 WinUI ProgressRing 的样式在带有 Uno 2.4 的 WASM 上不可用

我知道使用Uno 尚不支持的模板绑定方式全局修改主题颜色。(我为 ToggleSwitch 尝试过,现在 ToggleSwitch 自定义样式在 UWP 和 WASM 上都能完美运行)。所以,我以同样的方式为 WinUI 2.4 ProgressRing 准备了一个自定义样式。我从 WinUI Github repo 收集了 ProgressRing 的默认样式并对其进行了自定义:

我的 ProgressRing 是:

如您所见,该样式在 UWP 上正确运行: 在此处输入图像描述

但是,WASM 显示默认样式:(

在此处输入图像描述

套餐

WASM 上 WinUI ProgressRing 的样式必须与 UWP 样式匹配。我怎样才能解决这个问题 ?谢谢。

0 投票
2 回答
289 浏览

javascript - 在 Rust 中使用 rug 和 wasm-bindgen

我想将 rug crate 与 wasm-bindgen 一起使用,以允许我在 Web 浏览器中使用任意精度的算术。但是,每当我尝试编译时,它都无法构建库,说的是

未解决的进口libc::c_char, libc::c_int, libc::c_long.

有解决方法吗?如果涉及 Emscripten 很好,但我希望能够主要编写 Rust 代码。

0 投票
2 回答
461 浏览

rust - 序列化结构时出错:预期结构 JsValue,发现结构错误

我收到错误:

当我通过实现 Serialize 来序列化一个结构然后将其传递给 时serde_wasm_bindgen,它使用此处
的示例代码 是最小可重现代码:

货运.toml

0 投票
1 回答
457 浏览

javascript - 如何使用 wasm-bindgen 调用任意先前定义的 JavaScript 函数 Rust?

在我的 javascript 中,在调用 wasm 之前,我定义了一个函数 jalert,稍后我想使用 wasm 从 Rust 调用它。我在 wasm-bindgen 的文档中找不到如何调用我之前在 javascript 中定义的任意函数,如下所示。我得到了像 alert 和 console.log 这样的函数,因为它们已经是 javascript 的一部分,但是我不能让这个函数 jalert 工作。我在浏览器中收到一个错误,说它没有定义。有了警报功能,它不会抱怨。

在锈文件中lib.rs

0 投票
1 回答
325 浏览

javascript - 为什么 Rust WASM 指针和 JS 指针的值不同?

假设我在 Rust 代码中有以下定义:

JS 代码创建一个实例RustType并将其传递给print_addr函数:

像这样修改生成的print_addr函数后index_bg.js

在开发控制台中,我得到以下输出:

问题是为什么 Rust 指针和 JS 指针的值不同?同样根据我的观察,Rust 指针和 JS 指针之间的差异总是等于 4。为什么会这样?

0 投票
1 回答
228 浏览

rust - 如何从 Wasm 内存缓冲区中读取元组结构?

我定义了一个元组结构:

我的假设

ChangedCell重 9 个字节(bool:1 个字节,u32:4 个字节,u32:4 个字节)

我做了什么

我为JavaScript返回了一个pointer, lengthfor :Vec<ChangedCell>

预期行为

  • isVal成为valid [byte]
  • val1成为valid [byte] * 4
  • val2成为valid [byte] * 4

问题

I am getting Garbage values! 你如何将这样的内容读入 JavaScript?

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 的其他粘合逻辑中包含以下内容:

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