問題タブ [wasm-bindgen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
6638 参照

rust - オブジェクトの配列を WebAssembly に渡し、それを wasm-bindgen で構造体のベクトルに変換する方法は?

次のように整数の配列を渡すことができます。

WebAssembly に保存し、次のようなベクターに保存します。

次のように単一のオブジェクトを渡すこともできます。

WebAssembly に追加し、次のElementような構造体として保存します。

次に試したのは、次のようなオブジェクトの配列を渡すことです。

ElementWebAssembly に追加し、次のような構造体のベクトルとして保存します。

これはコンパイルされますが、このコードを実行するとエラーが発生します。

スクリーンショット_約束_拒否_エラー

次のように数値で満たされたオブジェクトの配列を渡します。

Element構造体に値のみが含まれている場合は、WebAssembly への変換が可能u32です。

String問題は構造体の型が原因のようElementです。

私は何を間違えましたか?

次の記事を見つけましたが、問題の解決策が見つかりません。

  • JsValueSerde を使用して任意のデータをシリアライズおよびデシリアライズする

    これは、JavaScript オブジェクトを構造体に変換する方法を説明していますが、オブジェクトの配列を構造体のベクトルに変換する方法は説明していません。

  • js_sys クレート

    このクレートにより、Rust で配列やオブジェクトなどの JavaScript 型を使用できますが、これは私が望んでいるものではありません。JavaScript の値を Rust の対応する値に変換したいと考えています。このクレートは、私が理解している限り、Rust でインラインで JavaScript を使用することのみを許可しています...そして、これは Rust だけを使用するほど高速ではありません。

  • githubの問題

0 投票する
1 に答える
195 参照

rust - 別のモジュールで定義された関数にマクロ属性を適用するにはどうすればよいですか?

wasm-bindgenviarust-webpack-templateを使用して Rust コードを WebAssembly にコンパイルすることに興味があります。#[wasm_bindgen]ただし、生成された WebAssembly インターフェイスから関数ロジックを分離してプロジェクトをより適切に整理できるように、コードを属性マクロで直接ラップすることは避けたいと思います。代わりに、バインディングの生成を別のファイルにすることをお勧めします。たとえば、次のようになります。

#[wasm_bindgen]これは、通常続く関数定義の AST で動作するマクロ属性であることは理解していますが、そのマクロを別の場所で定義されたコードに適用する方法はありますか?