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用户指南!