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

构建 rifgen

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

10 个版本

0.1.61 2022年10月25日
0.1.51 2022年2月23日
0.1.7 2023年6月8日
0.1.6 2022年10月25日
0.1.4 2021年10月6日

#72FFI

Download history 88/week @ 2024-03-12 135/week @ 2024-03-19 29/week @ 2024-03-26 67/week @ 2024-04-02 59/week @ 2024-04-09 102/week @ 2024-04-16 46/week @ 2024-04-23 75/week @ 2024-04-30 157/week @ 2024-05-07 76/week @ 2024-05-14 117/week @ 2024-05-21 153/week @ 2024-05-28 68/week @ 2024-06-04 87/week @ 2024-06-11 44/week @ 2024-06-18 66/week @ 2024-06-25

每月下载量 294

MIT 许可证

58KB
875

rifgen

Rust doc Rust Documentation donate

将用 Rust 编写的库翻译成接口文件的程序。它与 flapigen 一起工作。有关如何集成到您的项目的说明,请点击 这里。这个 crate 最初是 rust_interface_file_generator

假设您有以下 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

✅ 您无需担心接口中代码的 "顺序"

用户指南

在这里阅读 rifgen 用户指南!

在 crates.io 上查看

联系我

如果您想与我联系以帮助任何项目,您可以通过 Upwork 联系我

依赖项

~1.5MB
~38K SLoC