Rust の nightly で wasm32-unknown-unknown という target が入ったので、Emscripten ナシでも wasm を吐けるようになったということで。
rust と js で json 投げあうコードまで書くか
— Insanely fast (@mizchi) 2017年11月26日
やった。
普通に serde とか使えて便利。
文字列を渡すときには Rust 側の関数で alloc してヒープのそのポインタへ JS から書いてやる必要がある。で、関数にはそのポインタを渡す。
受け取るときはポインタが返ってくるのでヒープを読みに行く必要がある。while (mem[ptr] != 0)
みたいなことになってるけど、これもっといい方法無いんですかね。
あと、dealloc は忘れずに。
fat pointer を返したらいいんじゃね? と思ったけど、128bit をどうやって渡せばいいんだろうな wasm32 だから fat pointer は 64bit か?