相互運用の戦略
データ構造やシンボルを直接共有することは非常に困難です:
C ABI を介した FFI のほうが、はるかに実現しやすいです:
その他の戦略:
- 分散システム (RPC)
- カスタム ABI(つまり WebAssembly Interface Types)
高忠実度の相互運用
理想的なシナリオは、現在のところ実験段階です。
これを探究しているプロジェクトとして、crubit と Zngur があります。前者は、互換性のある型が ドメインをまたいでシームレスに動作できるように、各側でグルーコードを提供します。後者は 動的ディスパッチに依存し、C++ オブジェクトを Rust に trait object として取り込みます。
C API を介する低忠実度の相互運用
相互運用の典型的な戦略は、インターフェースとして C 言語を使うことです。C は 損失のあるコーデックです。この戦略では、通常、両側で複雑なコードが必要になります。
その他の戦略 は、ゼロコスト環境では現実性が低くなります。
分散システム はランタイムコストを伴います。
外部ライブラリのメソッド呼び出しでは、シリアライズ/転送/デシリアライズの 往復が発生するため、大きなオーバーヘッドを招きます。一般論として、 透過的な RPC は良い考えではありません。間にネットワークが入るからです。
wasm などの カスタム ABI は、ランタイムまたは大きな実装コストを必要とします。