C を使用すると、実行時に次のことができます。
- 関数のソースコードを作成し、
- gcc を呼び出して .so (Linux) にコンパイルします (または llvm などを使用します)。
- .so をロードし、
- 関数を呼び出します。
Rustでも同様のことが可能ですか?
特に、代数データ型を使用したいので、Rust の機能の C サブセットを使用するだけでは不十分です。
C を使用すると、実行時に次のことができます。
Rustでも同様のことが可能ですか?
特に、代数データ型を使用したいので、Rust の機能の C サブセットを使用するだけでは不十分です。
公式にはまだですが、あまりハッキングしなくても少なくとも可能になるはずです。最大の障害は、ライブラリにはまだ動的ロードを実行する機能がないことです。これを機能させるための潜在的な戦略を次に示します (Rust の受信ブランチで)。
#[no_mangle]
。これは(私は試していませんが)マングルされていないシンボル名を生成するはずなので、簡単に見つけることができます。sys::Closure
) に安全に変換しません。Rust には、この種の用途に使用できる最小限のテスト済みの JIT もありますが、いくつかの大きなバグがあります。