rust - 如何将嵌套 Vecs 与 wasm-bindgen 一起使用?
问题描述
似乎nested Vec
s 不能与 wasm-bindgen 一起使用。那是对的吗?
我的目标是在 Rust 中创建一个可以作为行返回的 Game of Life 网格,而不是Vec
需要 JavaScript 来处理索引的一维网格。我想到的两种解决方法是:
- 在 Rust 中实现一种自定义的“迭代器”,这是一种逐一返回行的方法。
- 将一维数组交给 JavaScript,但在 JavaScript 中编写一个包装器来处理索引并向消费者公开某种迭代器。
我对使用其中任何一个都犹豫不决,因为我希望这个库可以被 JavaScript 和原生 Rust 使用,而且我认为这两个库在纯 Rust 领域都不会非常惯用。还有其他建议吗?
解决方案
你是对的,wasm-bindgen
今天不支持返回类型,如Vec<Vec<u8>>
.
WebAssembly 的一个好的经验法则是,大块数据(如向量)应始终位于同一位置,以避免损失太多性能。这意味着您可能想要探索一个接口,其中 JS 对象将指针包装到 WASM 内存中,并且它的所有方法都使用行/列索引,但修改 WASM 内存以将其作为事实来源。
如果这不起作用,那么今天实现这一点的最佳方法也是您提到的任何一种策略,尽管这两种策略都需要编写一定程度的 JS 胶水代码。
推荐阅读
- android - 为什么我的应用程序不会膨胀导航视图类?
- vb.net - 加载主表单后在计时器滴答声上移动子表单
- python - Numpy 数组点积
- arraylist - 使用区域键而不是 kotlin 中的唯一键存储值?
- android - 键盘的 HTML 验证
- rest - 编码不会在 swagger-ui 中的 requestBody 中爆炸属性
- javascript - 无法在 javascript 中读取 JSESSIONID 或 Cookie 详细信息
- javascript - 如何阅读 Angular API 文档中的括号/冒号样式参数规范?
- jenkins - 从用户 jenkins 获取用户输入
- c# - 如何旋转图像,使其看起来像是漂浮在 C# UWP 中?