Rust FFI 实战:当你不得不和 C 库打交道
Rust 的所有权系统在 FFI 边界会失效——一旦指针跨过 extern \"C\",borrow checker 就看不到了。本文从 bindgen 自动生成绑定、cbindgen 导出 Rust 接口、内存所有权跨语言传递,到为 C 库编写安全的 Rust wrapper,系统拆解 FFI 实战中的每一个坑。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 3 篇文章 · 返回首页
Rust 的所有权系统在 FFI 边界会失效——一旦指针跨过 extern \"C\",borrow checker 就看不到了。本文从 bindgen 自动生成绑定、cbindgen 导出 Rust 接口、内存所有权跨语言传递,到为 C 库编写安全的 Rust wrapper,系统拆解 FFI 实战中的每一个坑。
C++ 的 RAII 有五个逃生舱门:use-after-move、悬垂引用、共享可变、异常安全、裸指针逃逸。Rust 的所有权模型把它们全部焊死了。从 C++ 侧拆解 RAII 的根本缺陷,看 Rust 如何在每个分叉点做出不同选择。
组装完整 LSM-Tree 存储引擎:DB 接口(Open/Put/Get/Delete/Iterator/Snapshot)、单写多读并发控制、启动恢复,然后用 Rust 重写核心模块,记录 5 个编译器不让我过的故事,最后三方 benchmark 对比。从零写一个 LSM-Tree 存储引擎系列第 5 篇。