أداة لتوصيل البرامج أو المكتبات المكتوبة في الصدأ بلغات أخرى. مولد واجهة برمجة تطبيقات اللغة الأجنبية - Flapigen. تم تغيير الاسم السابق Rust_swig إلى عدم الخلط بين Swig. تم تنفيذ الدعم الذي تم تنفيذه حاليًا لـ C++ و Java ، ولكن يمكنك كتابة الدعم لأي لغة من اختيارك. للحصول على تعليمات كيفية دمج Flapigen مع مشروعك ، انظر هنا.
افترض أن لديك رمز الصدأ التالي:
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
}وتريد أن تكتب في جافا شيئًا مثل هذا:
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 );من أجل تنفيذها ، تقترح Flapigen الوظيفة التالية ، في مشروع 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 ;
} ) ;وهذا كل شيء ، ونتيجة لذلك ، يقوم Flapigen بإنشاء ملفات JNI لوظائف الصدأ ورمز Java للاتصال بوظائف JNI هذه أو تقوم بإنشاء أغلفة متوافقة C في حالة C ++ و C ++ لاستدعاء وظائف C هذه.
إذا كنت تريد ملف الواجهة (الملف الذي يحتوي على foreign_class! وما إلى ذلك) يتم إنشاءه تلقائيًا لك ، الخروج Rifgen.
اقرأ دليل مستخدمي flapigen هنا!