#linked-list #ffi #c

linked_list_c

安全地操作与 C 兼容的链表

4 个版本

0.1.2 2023 年 3 月 5 日
0.1.1 2023 年 2 月 3 日
0.1.0 2022 年 12 月 31 日
0.0.1 2022 年 12 月 22 日

数据结构 中排名第 1972


用于 2 个crate

MIT/Apache

13KB
237

linked_list_c

这是一个 Rust crate,旨在使 C 风格的链表更容易使用。

一些 FFIs 接受并/或返回链表,需要指针操作和不可安全代码来处理。这个 crate 尝试为您处理这些令人不快的部分,并提供一个安全和直观的接口

特性

  • 轻松创建可以传递给 C FFIs 的链表
  • 安全地遍历从 C FFI 接收到的链表
  • 处理在 drop 时的链表清理
    • 可以设置自定义的 drop 函数,如果 Drop 或 libc::free() 不适用于您
  • 非常简单的 trait,只需与您最喜欢的 struct 一起使用
    • 如果 yourStruct.next 指向下一个 yourStruct,则添加 #[derive(LlItem)]
    • 或使用 impl_LlItem!([yourStruct, ...])
  • 零拷贝和最小的额外内存占用(除了从 from<Vec> 实现)
  • 目前还不是完全的 no_std,但这可以很容易地实现

依赖关系

~46–305KB