如何自动化 Rust 代码的 Java 绑定?
我想从Java / Android调用Rust代码,我发现了3种变体:
JNI看起来不错,功能强大,但你必须手动编写太多的代码。
JNA,如果不考虑它在我的机器上崩溃,需要手动在Java中编写Rust结构数据类型描述,这与JNR FFI的问题相同。
所以我想知道为宏或编译器插件生成JNI代码有多困难?此编译器应与具体结构的特征实现匹配,并且还与结构相匹配traits
struct
#[JNI]
struct Foo {
a: i32,
}
trait Boo {
fn f(&self, b: f64) -> f64;
}
#[JNI]
impl Boo for Foo {
fn f(&self, b: f64) -> f64 {
0f64
}
}
并为带有函数的结构和Java类创建Java类,并生成包装特征函数的函数。native
pub
no_mangle