#C interoperability

7/10

在 Kangrejos 2026 上,Andreas Hindborg 介绍了 Rust for Linux 的一个补丁系列(邮件列表中的 v21 版本,2026 年 9 月发布),它新增 Ownable trait 和 Owned 智能指针,让 Rust 代码可以持有由 C 代码分配的对象,并在使用完毕后负责清理(但不一定释放内存)。Owned 像 KBox 一样提供对所指值的唯一访问,但生命期结束时调用 release\(\) 而非 free,因此只能指向实现了 Ownable 的 C 类型,例如块层中可复用的 bio 请求结构。该系列尚未合并,Hindborg 希望在数月邮件列表讨论后达成共识;主要争议在于 Owned 与 ARef 之间的转换可能破坏健全性,他提议把 AlwaysRefCounted 拆成两个 trait,并禁止同时实现 Ownable 的类型将内建引用升级为 ARef。讨论还涉及 page 结构是否可实现 Ownable,以及 IOMMU 页表、Rust binder 驱动和 USB 驱动等潜在使用场景。