flapigen rs
0.8.0
用於連接程序或庫與其他語言編寫的程序或庫的工具。外語API發電機-Flapigen。以前的名字rust_swig被更改為不與Swig混淆。目前對C++和Java進行了支持,但是您可以為您選擇的任何語言編寫支持。有關指示,如何將Flapigen與您的項目集成在一起。
假設您有以下生鏽代碼:
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 );為了實施IT,Flapigen提出了以下功能,在您編寫的Rust Project中(用Rust語言):
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生成了Rust功能和JAVA代碼的JNI包裝器,以調用這些JNI功能或在C ++和C ++代碼的情況下生成C兼容的包裝器來調用這些C函數。
如果要自動為您生成接口文件(包含foreign_class!等的文件),請簽出Rifgen。
在此處閱讀flapigen用戶指南!