#self-referential data structures

在 Kangrejos 2026 大会上,Gary Guo 提出了一种基于内核 pin\init crate 的方法,使自引用数据结构无需 unsafe 代码即可实现;这是会议演讲中展示的设计方案,并非已合入内核的改动。该方案借助 Rust 的子类型、well-formedness 规则与仅限于生命周期参数的高阶多态(如 &dyn for<&\x27;a> Fn\(&&\x27;a u32\))来处理过去难以满足的生命周期约束。按演讲所述,它有望移除 Nova GPU 驱动中大部分与生命周期相关的 unsafe 代码,并可能逐步推广到其他 Rust-for-Linux 组件。原文指出问题的根源在于设备资源(例如设备内存)只在设备绑定期间有效:原有的 Devres 类型内部使用 Revocable 指针,强制每次访问都做可失败检查,给驱动代码引入了大量冗余的失败路径。