Ferramenta para conectar programas ou bibliotecas escritas em ferrugem com outros idiomas. Gerador de API de língua estrangeira - Flapigen. O antigo nome Rust_swig foi alterado para não confundir com SWIG. Atualmente implementado suporte para C++ e Java , mas você pode escrever suporte para qualquer idioma de sua escolha. Para uma instrução como integrar o Flapigen ao seu projeto, procure aqui.
Suponha que você tenha o seguinte código de ferrugem:
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
}E você quer escrever em java algo assim:
Foo foo = new Foo ( 5 );
int res = foo . f ( 1 , 2 );
assert res == 8 ;ou em C ++ algo assim:
Foo foo ( 5 );
int res = foo.f( 1 , 2 );
assert (res == 8 );Para implementá -lo, o Flapigen sugere a seguinte funcionalidade, no projeto de ferrugem que você escreve (na linguagem ferrugem):
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 ;
} ) ;E isso é tudo, como resultado, o Flapigen gera wrappers JNI para funções de ferrugem e código Java para chamar essas funções JNI ou gera invocadores compatíveis com C em caso de código C ++ e C ++ para chamar essas funções C.
Se você deseja que o arquivo de interface (o arquivo que contém foreign_class! E assim por diante) seja gerado automaticamente para você, checkout rifgen.
Leia o Guia dos usuários flapigen aqui!