【问题标题】:Is there a better way than iter to convert hashmap to JsValue有没有比 iter 更好的方法将 hashmap 转换为 JsValue
【发布时间】:2022-09-23 05:26:13
【问题描述】:

有没有比 iter 更好的方法将hashmap 转换为JsValue

let mut map = HashMap::new<String,String>();
// Do something...
let obj = js_sys::Object::new();
for (k,v) in map.iter() {
  let key = JsValue::from(k);
  let value = JsValue::from(v);
  js_sys::Reflect::set(&obj,&key,&value).unwrap();
}
JsValue::from(obj)
  • 不,任何实现要么是递归的,要么在代码中有自己的堆栈。可能有一个涉及抽水引理的证明,但直观地说,你有嵌套数据,所以你将不得不做自相似的操作来从格式 A 到格式 B。那是递归是干什么用的。
  • 您要转换哪个“方向”?哈希图是平面的,还是有嵌套的哈希图?
  • 我编辑描述,原始描述不正确

标签: rust webassembly


【解决方案1】:

来自 wasm-bindgen 指南中的Serializing and Deserializing Arbitrary Data Into and From JsValue with Serde:您可以在serde-wasm-bindgen crate 的帮助下转换任何Serialize-able 类型:

使用它,您的代码将如下所示:

serde_wasm_bindgen::to_value(&map).unwrap()

该指南列出了另一个 crate,gloo-utils,它提供类似的功能,但通过 Wasm/Javascript 桥以不同的方式通信数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-04
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多