10个版本

0.0.12 2024年7月30日
0.0.11 2024年7月30日
0.0.9 2024年6月19日
0.0.7 2024年5月13日
0.0.4 2024年1月12日

#97 in FFI

Download history 7/week @ 2024-04-21 6/week @ 2024-04-28 33/week @ 2024-05-05 170/week @ 2024-05-12 94/week @ 2024-05-19 136/week @ 2024-06-09 241/week @ 2024-06-16 7/week @ 2024-06-23 14/week @ 2024-06-30 63/week @ 2024-07-07 2/week @ 2024-07-14 602/week @ 2024-07-28 112/week @ 2024-08-04

每月716次下载

BSD-2-Clause

30KB
803

ffi_types

该存储库提供了C-ABI兼容的基本Rust类型,包括box、slice、str以及boxed slice/str。通过仔细遵循说明,这些类型与bindgen/cbindgen兼容,并且拥有值在C++下是安全的。

项目由两部分组成。一个Rust crate,用于rust类型包装器的#[repr(C)],以及一个用于C++(或稍后更多)的头文件。

转换旨在实现零成本。

待办事项:链接到文档和示例

CBindgen

使用ffi_types::cbindgen::with_cxx_ffi_types()cbindgen::Builder添加正确的配置。

Bindgen

将提供的头文件阻塞到blocklist_file。将生成的文件中所有的root::ffi_types::替换为ffi_types::

不是最佳FFI选择

如果您开始一个新项目,请检查cxx是否适合您的需求。

由于ffi_types的目标是向C++侧暴露Rust类型,您需要访问C++代码库。

ffi_types只提供类型。没有任何事情是自动的。您仍然需要管理bindgen/cbindgen。

MSVC非常挑剔。ffi_types限制了MSVC中C前缀类型的便利初始化。这将变得更加不便和不安全。

依赖关系

~0-9MB
~84K SLoC