flapigen rs
0.8.0
さびに書かれたプログラムまたはライブラリを他の言語と接続するためのツール。外国語APIジェネレーター - フラピゲン。以前の名前Rust_swigは、Swigと混同しないように変更されました。現在、 C++とJavaのサポートが実装されていますが、選択したあらゆる言語のサポートを作成できます。フラピゲンをプロジェクトと統合する方法については、こちらをご覧ください。
次の錆コードがあるとします。
struct Foo {
data : i32
}
impl Foo {
fn new ( val : i32 ) -> Foo {
Foo { data : val }
}
fn f ( & self , a : i32 , b : i32 ) -> i32 {
self . data + a + b
}
fn set_field ( & mut self , v : i32 ) {
self . data = v ;
}
}
fn f2 ( a : i32 ) -> i32 {
a * 2
}そして、あなたはJavaにこのようなものを書きたいです:
Foo foo = new Foo ( 5 );
int res = foo . f ( 1 , 2 );
assert res == 8 ;またはC ++で次のようなもの:
Foo foo ( 5 );
int res = foo.f( 1 , 2 );
assert (res == 8 );それを実装するために、Flapigenは次の機能を示唆しています。
foreign_class ! ( class Foo {
self_type Foo ;
constructor Foo :: new ( _ : i32 ) -> Foo ;
fn Foo :: set_field ( & mut self , _ : i32 ) ;
fn Foo :: f ( & self , _ : i32 , _ : i32 ) -> i32 ;
fn f2 ( _ : i32 ) -> i32 ;
} ) ;その結果、Flapigenは、これらのJNI関数を呼び出すために錆機能のJNIラッパーとJavaコードのJNIラッパーを生成するか、C ++およびC ++コードがこれらのC関数を呼び出す場合にC互換性のあるラッパーを生成します。
インターフェイスファイル( foreign_class!などを含むファイル)を自動的に生成する場合は、rifgenをチェックアウトします。
flapigenユーザーガイドをこちらをご覧ください!