似乎Vec
嵌套不能与wasm-bindgen一起使用。正确吗?
我的目标是在Rust中创建一个Game of Life网格,我可以将其作为行返回,而不是需要JavaScript处理索引的一维Vec
。我想到的两个解决方法是:
我犹豫使用这两种方法,因为我希望该库可被JavaScript和本机Rust使用,并且我认为在纯Rust领域,这两种方法都不是非常习惯的。还有其他建议吗?
答案 0 :(得分:7)
您正确的认为,今天的wasm-bindgen
不支持像Vec<Vec<u8>>
这样的返回类型。
WebAssembly的一个好的经验法则是,大块数据(如矢量)应始终位于同一位置,以避免失去过多的性能。这意味着您可能想探索一个接口,其中JS对象将指针包装到WASM内存中,并且其所有方法都可与行/列索引一起使用,但修改WASM内存以将其保留为事实的来源。
如果仍然无法解决问题,那么今天实现此目的的最佳方法就是您提到的任何一种策略,尽管这两种策略也都需要编写一定程度的JS胶水代码。