#java #jni #swig #cpp #api-bindings

nightly build rust_interface_file_generator

FFI 接口文件生成器。与 flapigen 一起使用

18 个版本

0.2.5 2021年10月7日
0.2.4 2021年10月6日
0.1.121 2021年9月19日
0.1.25 2021年10月6日

FFI 中排名 222

Download history 5/week @ 2024-03-15 6/week @ 2024-03-29 1/week @ 2024-04-05

每月下载 51

MIT 许可证

59KB
883

rust_interface_file_generator

Rust IntelliJ IDEA Rust Documentation

将用 Rust 编写的库翻译为接口文件的程序。

注意,这个 crate 已被弃用。请使用 rifgen

它与 flapigen 一起工作。有关如何与项目集成的说明,请点击 这里

假设你有以下 Rust 代码

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;
    }
}

使用 flapigen,你需要编写一个类似以下的接口文件

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;
});

以便在 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);

这个程序生成接口文件,这样你就可以有更多时间专注于你的代码

其他功能

✅ 快速且易于使用

✅ 指定结果的代码风格,例如 CamelCase 或 snake_case

✅ 支持 struct、enum、trait

✅ 你无需担心接口中代码的“顺序”

用户指南

在此处阅读 rust_interface_file_gen 用户指南!

在 crates.io 上查看

## 更新到 rifgen

这个 crate 现已迁移到 rifgen

依赖

~1.5MB
~37K SLoC