Alat untuk menghubungkan program atau perpustakaan yang ditulis dalam karat dengan bahasa lain. Generator API Bahasa Asing - Flapigen. Mantan nama Rust_swig diubah untuk tidak bingung dengan Swig. Saat ini diterapkan dukungan untuk C++ dan Java , tetapi Anda dapat menulis dukungan untuk bahasa pilihan Anda. Untuk instruksi bagaimana mengintegrasikan flapigen dengan proyek Anda, tampilan di sini.
Misalkan Anda memiliki kode karat berikut:
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
}Dan Anda ingin menulis di Java sesuatu seperti ini:
Foo foo = new Foo ( 5 );
int res = foo . f ( 1 , 2 );
assert res == 8 ;atau dalam C ++ sesuatu seperti ini:
Foo foo ( 5 );
int res = foo.f( 1 , 2 );
assert (res == 8 );Untuk mengimplementasikannya Flapigen menyarankan fungsionalitas berikut, dalam proyek karat Anda menulis (dalam bahasa karat):
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 ;
} ) ;Dan itu saja, sebagai hasilnya flapigen menghasilkan pembungkus JNI untuk fungsi karat dan kode Java untuk memanggil fungsi JNI ini atau menghasilkan pembungkus C yang kompatibel jika kode C ++ dan C ++ untuk memanggil fungsi C ini.
Jika Anda ingin file antarmuka (file yang berisi foreign_class! Dan seterusnya) dibuat secara otomatis untuk Anda, checkout rifgen.
Baca Panduan Pengguna flapigen di sini!