やった。
普通に serde とか使えて便利。
文字列を渡すときには Rust 側の関数で alloc してヒープのそのポインタへ JS から書いてやる必要がある。で、関数にはそのポインタを渡す。
受け取るときはポインタが返ってくるのでヒープを読みに行く必要がある。while (mem[ptr] != 0)
みたいなことになってるけど、これもっといい方法無いんですかね。
あと、dealloc は忘れずに。
fat pointer を返したらいいんじゃね? と思ったけど、128bit をどうやって渡せばいいんだろうな wasm32 だから fat pointer は 64bit か?