#bindings #string #expose #error #function #panics

ffi-support

一个用于通过 FFI 暴露 Rust 函数的 crate

17 个版本

0.4.4 2021 年 7 月 28 日
0.4.2 2020 年 8 月 6 日
0.4.0 2020 年 1 月 14 日
0.3.5 2019 年 7 月 17 日
0.1.2 2018 年 12 月 12 日

#63FFI

Download history 3968/week @ 2024-03-14 4703/week @ 2024-03-21 3093/week @ 2024-03-28 3850/week @ 2024-04-04 3302/week @ 2024-04-11 3223/week @ 2024-04-18 3082/week @ 2024-04-25 5281/week @ 2024-05-02 4993/week @ 2024-05-09 3349/week @ 2024-05-16 3813/week @ 2024-05-23 3821/week @ 2024-05-30 3038/week @ 2024-06-06 2936/week @ 2024-06-13 2718/week @ 2024-06-20 2245/week @ 2024-06-27

11,621 每月下载量
用于 18 个 crate(14 个直接使用)

Apache-2.0 / MIT

130KB
1.5K SLoC

FFI 支持

Docs

此 crate 实现了一个支持库,以简化实现 mozilla/application-services 仓库使用的模式,该模式用于其 "Rust 组件" FFI 库,这些库用于共享 Rust 代码

特别是,它可以协助以下领域

  1. 避免在 FFI 中抛出 panic(这是未定义的行为)
  2. 将 rust 错误(和 panic)转换为调用方能够处理的错误。
  3. 将字符串转换为 rust str,反之亦然。
  4. 在 Rust 和 FFI 另一侧的调用方之间来回传递非字符串数据(以几种方式,包括暴露一个不可知的指针,使用 serde 将数据打包成 JSON 字符串,以及任意自定义处理)。

此外,其文档描述了我们在此过程中遇到的一些问题,这些问题涉及向移动平台上的消费者暴露库。

使用

将以下内容添加到您的 Cargo.toml 中

ffi-support = "0.4.4"

有关更多示例,请参阅文档中的示例,然后是 mozilla/application-services 仓库中的使用代码(例如 此处此处)。

许可证

双重许可,可选择 Apache 许可证,版本 2.0 或 http://www.apache.org/licenses/LICENSE-2.0 或 MIT 许可证或 http://opensource.org/licenses/MIT。所有携带此类通知的项目文件均不得复制、修改或分发,除非根据这些条款。

依赖项

~52–630KB
~13K SLoC