Инструмент для подключения программ или библиотек, написанных в ржавчине с другими языками. Генератор API иностранного языка - Flayigen. Бывшее имя rust_swig было изменено, чтобы не путать с Swig. В настоящее время реализованная поддержка C++ и Java , но вы можете написать поддержку для любого языка по вашему выбору. Для инструкции, как интегрировать Flayigen с вашим проектом, посмотрите здесь.
Предположим, у вас есть следующий код ржавчины:
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 );Чтобы реализовать его Flayigen, предлагает следующую функциональность, в проекте 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 ;
} ) ;И это все, в результате Flayigen генерирует обертки JNI для функций ржавчины и кода Java, чтобы вызвать эти функции JNI или генерирует C -совместимые обертки в случае C ++ и C ++ для вызова этих функций C.
Если вы хотите, чтобы файл интерфейса (файл, содержащий foreign_class! И так далее), был автоматически сгенерирован для вас, Checkout rifgen.
Прочитайте руководство пользователей flapigen здесь!