Werkzeug zum Verbinden von Programmen oder Bibliotheken, die in Rost mit anderen Sprachen geschrieben wurden. Fremdsprachen -API -Generator - Flapigen. Der frühere Name Rust_Swig wurde geändert, um nicht mit Swig zu verwechseln. Derzeit implementierte Unterstützung für C++ und Java , aber Sie können Unterstützung für jede Sprache Ihrer Wahl schreiben. Für eine Anweisung, wie Sie Flapigen in Ihr Projekt -Look integrieren.
Angenommen, Sie haben den folgenden Rostcode:
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
}Und Sie möchten in Java so etwas schreiben:
Foo foo = new Foo ( 5 );
int res = foo . f ( 1 , 2 );
assert res == 8 ;oder in c ++ so etwas:
Foo foo ( 5 );
int res = foo.f( 1 , 2 );
assert (res == 8 );Um es zu implementieren, schlägt Flapigen die folgende Funktionen vor, in dem von Ihnen geschriebenen Rust -Projekt (in Rust Sprache):
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 ;
} ) ;Und das ist alles, als Ergebnis erzeugt Flapigen JNI -Wrapper für Rostfunktionen und Java -Code, um diese JNI -Funktionen aufzurufen, oder erzeugt C -kompatible Wrapper im Falle von C ++ - und C ++ - Code, um diese C -Funktionen aufzurufen.
Wenn Sie möchten, dass die Schnittstellendatei (die Datei mit foreign_class! Usw.) automatisch für Sie generiert wird, checkout rifgen.
Lesen Sie hier den Leitfaden der flapigen -Benutzer!