3 个版本
0.1.2 | 2019 年 12 月 17 日 |
---|---|
0.1.1 | 2019 年 12 月 17 日 |
0.1.0 | 2019 年 12 月 17 日 |
#273 in FFI
18KB
398 行
Foreignc
Foreignc 是一个用于自动生成 Rust 方法安全 ffi abis 的框架。Foreignc 的主要优势是可以轻松部署和维护安全 ffi abis。该包由两部分组成。
- 用于自动生成 ffi abis 和清理方法的宏
- 用于自动生成 ffi abis 接收端的函数
- 目前仅支持 Python
模板化
使用“template”功能,可以自动生成 ffi 的接收端。这将还添加两个新函数 get_package_dir 和 get_parsed_dir。这两个函数都返回当前 ffi api 的表示
默认类型
原始类型
以下原始类型受支持
- bool
- ()
- i8, i16, i32, i64
- u8, u16, u32, u64
- f32, f64
- &str (将转换为 CString)
其他类型
以下其他类型受支持
- Result (将转换为 CResult)
- Option (将转换为 COption)
- String (将转换为 CString)
自定义结构体
可以通过使用 IntoFFi、FromFFi 特性或 Boxed、Json 宏来实现自定义类型。
安全性
一般来说,所有分配的内存都需要由创建者释放。这是 generate_free_methods 生成函数的基础,这些函数用于释放由 foreignc 创建的结构体分配的内存。以下函数已创建
- free_string(ptr: *mut CString)
- free_coption(ptr: *mut COption)
- free_cresult(ptr: *mut CResult)
Boxed 结构体会自动生成一个 free 方法,使用以下约定 free_{to_snake_case(struct name)}
更多信息请参阅 ![git repository]
依赖关系
~1.1–3.5MB
~77K SLoC