Вы правы, что wasm-bindgen
сегодня не поддерживает возвращаемые типы, такие как Vec<Vec<u8>>
.
Хорошее практическое правило для WebAssembly заключается в том, что большие куски данных (например, векторы) всегда должны находиться в одном и том же месте, чтобы избежать потери слишком большой производительности.Это означает, что вам может потребоваться изучить интерфейс, в котором объект JS помещает указатель в память WASM, и все его методы работают с индексами строк / столбцов, но изменяют память WASM, чтобы она оставалась источником правды.
Если это не сработает, то лучший способ реализовать это сегодня - это любая из упомянутых вами стратегий, хотя обе из них требуют написания некоторого уровня JS-кода.