如何访问 Wasm (Rust) 中的 JS 对象属性?

2023-12-20

我正在使用 wasm bindgen 并且有以下功能:

#[wasm_bindgen]
pub fn obj(o: &JsValue){
console::log_1(o);
}

在js中我调用这个函数obj({name: "john"});它工作得很好,但是当我尝试时console::log_1(o.name);它给出了错误unknown field指着name


JsValue没有字段name。要获取此字段,您必须声明 JS 对象。

变体1

将 serde 添加到您的依赖项中:

serde = "^1.0.101"
serde_derive = "^1.0.101"

铁锈代码:

extern crate serde;

#[derive(Serialize, Deserialize)]
pub struct User {
    pub name: String,
}

#[wasm_bindgen]
pub fn obj(o: &JsValue){
    let user: User = o.into_serde().unwrap();
    console::log_1(user.name);
}

变体2

另一种方法是直接使用 wasm-bindgen 但我从未使用过它。我认为它应该像这样工作:

#[wasm_bindgen]
pub struct User {
    pub name: String,
}

#[wasm_bindgen]
pub fn obj(o: User){
    console::log_1(o.name);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何访问 Wasm (Rust) 中的 JS 对象属性? 的相关文章

随机推荐

  • Latex - 提取子字符串/忽略字符

    我有以下问题 我定义了一个宏 func如下 newcommand func 1 do something with 1 X 1 Y 我现在想定义另一个宏 newcommand MyFunc 1 parse 1 and if it conta
  • 如何在 d3.js 转换中正确更新输入元素的文本值

    我一直在尝试 一步一步 转换一些非常好的但静态的和非 d3code https github com saebekassebil teoria tree master examples用于 d3 js 可视化中的动态动画 虽然与这个问题没有
  • 避免竞争条件?操作员

    是否 可用于调用委托或事件的运算符避免竞争条件 例如 手动避免竞争条件 The event invoking method that derived classes can override protected virtual void O
  • 为什么快速排序比基数排序更流行?

    为什么快速排序 或介绍排序 或任何基于比较的排序算法比基数排序更常见 特别是对于数字排序 基数排序不是基于比较的 因此可能比 O n日志 其实还可以n 其中 k 是用于表示每个项目的位数 并且内存开销并不重要 因为您可以选择要使用的存储桶的
  • 需要好的 RDLC(报告)示例/样本 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 有条件地派生 Show 以获取在类型构造函数上参数化的存在类型

    假设我有这样的数据类型 LANGUAGE RankNTypes data X a forall b Show b gt X a b 我想导出Show X a 但当然我只能在有实例的情况下这样做Show a b 我很想写 LANGUAGE S
  • Django迁移找不到GDALRaster

    我接手了一个使用 Django Django REST 框架和 Leaflet 的项目 将绘制的路径存储在数据库中 在中安装 Djangovirtualenv并尝试迁移它会引发 文件 D SHK ElektroClean venv lib
  • Asp.net何时终止后台线程?

    我正在开发一个项目 有大量电子邮件发送其中的一部分 当用户单击按钮时 他 她会立即收到 感谢电子邮件已发送 作为响应 并且会触发相同的方法还有一个异步线程 ThreadPool QueueUserWorkItem SendEMail mes
  • 作业 - 尝试计算两个城市之间的多个航班停靠点?

    这是针对数据库类 使用 Oracle DB 11g Tables Flight flt no from city to city flt distance flt departs flt arrives flt price Aircraft
  • Delphi XE2无限等待线程中调用哪个等待方法

    如果我有一个 While not terminated do begin doStuff end 在 Delphi XE2 线程的执行方法中循环 我不想让它让我所有的失败 我该怎么称呼 在 Delphi 7 中 这很简单 我调用 Sleep
  • 如何在 Perl 中从终端进行管道传输而不丢失颜色?

    我正在尝试编写一个 perl 脚本 它获取 colorgcc 的输出 或任何其他将彩色文本打印到终端的脚本 添加 删除字符串的一部分 然后将结果打印在same颜色作为输入字符串 以下代码将在生成的每一行前面打印 Hello World 颜色
  • iOS itunesconnect 沙箱测试账户(无效年份)

    这太奇怪了 上周我创建了一个测试用户帐户 一切都很好 但今天 它要求我添加出生年份 正如您在下面的屏幕截图中看到的那样 没有年份字段要填写 它却要求填写 苹果 你是认真的吗 如果我做错了什么 请告诉我 UPDATE 看来这是苹果页面上的一个
  • 如果未实现功能,则在链接时启用错误

    我注意到 当使用 G 链接项目时 如果有已声明但未实现的函数 则不会出现错误 除非我尝试调用它们 Q1 如果声明了函数但未实现 是否可以启用错误 或至少警告 Q2 为什么会有这种行为 Note 我在用G 4 7 0 ld 2 22如果那是
  • 标题中的离子导航选项卡

    嘿 我有一个关于离子导航的问题 我的应用程序的主要导航位于页脚中 但我想在标题中添加一个信息选项卡 我也希望此选项卡有它自己的视图 所以我将其设置如下所示
  • 更改所有页面的背景颜色 WP7

    有没有办法改变所有页面的背景颜色 或者我只需要改变LayoutRoot每页上的颜色 您可以做的是创建一个应用背景颜色的样式 您仍然需要将该样式应用到每个页面 但之后如果您需要进行更多更改 则只需更改样式即可 应用于页面的示例样式可以在以下位
  • 如何将 matplotlib 图保存为 .png 文件

    我有一段代码是从工作中的合作者那里获得的 这段代码生成如下图所示的图 绘图的示例图像 https i stack imgur com oJJLZ png 它通过引用另一段代码中的另一个函数来实现这一点 我不想以任何方式改变这一点 我想做的是
  • PHP 会话固定/劫持

    我正在尝试更多地了解 PHP会话固定 https www owasp org index php Session fixation以及劫持以及如何预防这些问题 我在 Chris Shiflett 的网站上阅读了以下两篇文章 会话固定 htt
  • 在 Eclipse IDE 中调试 Java 时将异常捕获为表达式

    Java 开发人员的日常调试情况是抛出异常 然后您需要深入调试器以找出抛出异常的原因 通常 您会尝试在引发异常之前设置一些断点 并希望能够确定导致该异常的情况 在 Eclipse 中 断点可以定义一个表达式 仅当变量 x 等于值 y 时才会
  • 您的 Xcode 版本对于您的 iOS 版本来说可能太旧

    我已将手机的操作系统版本更新至 iOS 14 并于今天将 Xcode 更新至版本 12 但是当我尝试通过 Android Studio 在 iPhone 11 iOS 14 上构建 Flutter 应用程序时 出现以下错误 Your Xco
  • 如何访问 Wasm (Rust) 中的 JS 对象属性?

    我正在使用 wasm bindgen 并且有以下功能 wasm bindgen pub fn obj o JsValue console log 1 o 在js中我调用这个函数obj name john 它工作得很好 但是当我尝试时cons