Outil pour connecter des programmes ou des bibliothèques écrits en rouille avec d'autres langues. Générateur API en langue étrangère - Flapigen. L'ancien nom Rust_swig a été changé pour ne pas confondre avec SHIG. Actuellement implémenté la prise en charge de C++ et Java , mais vous pouvez rédiger une prise en charge de toute langue de votre choix. Pour une instruction, comment intégrer le flapigen avec votre projet, look ici.
Supposons que vous ayez le code de rouille suivant:
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
}Et vous voulez écrire dans Java quelque chose comme ceci:
Foo foo = new Foo ( 5 );
int res = foo . f ( 1 , 2 );
assert res == 8 ;ou en C ++ quelque chose comme ceci:
Foo foo ( 5 );
int res = foo.f( 1 , 2 );
assert (res == 8 );Afin de le mettre en œuvre, Flaggen suggère les fonctionnalités suivantes, dans Rust Project que vous écrivez (en langue rouillée):
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 ;
} ) ;Et c'est tout, en conséquence, Flapigen génère des emballages JNI pour les fonctions de rouille et le code Java pour appeler ces fonctions JNI ou génère des emballages compatibles C en cas de code C ++ et C ++ pour appeler ces fonctions C.
Si vous souhaitez que le fichier d'interface (le fichier contenant foreign_class! Et ainsi de suite) est généré automatiquement pour vous, cachée Rifgen.
Lisez le guide des utilisateurs flapigen ici!