SuperAPI AI 工具集

rust-pin

编程与开发

查看项目

更新于 10-15 22:15

技能介绍

用途:该技能聚焦 Rust 的 Pin 与自引用类型,用于处理 async/await 生成的 Future、自引用结构体、自定义 Future 实现以及生成器等需要保证内存地址稳定的场景。

主要能力:讲解何时需要 Pin(async/await、自引用结构、自定义 Future、生成器)与何时不需要(同步代码、无自引用、栈上临时值、类型为 Unpin);介绍 Pin<&T>、Pin<&mut T>、Pin<Box<T>>、Pin<Arc<T>> 等类型;说明 Unpin 标记 trait 及通过 PhantomPinned 主动退出 Unpin;给出堆固定(Box::pin)、栈固定(pin! 宏)、不安全固定(Pin::new_unchecked)与投影(安全投影需 T: Unpin,否则用 Pin::new_unchecked 或 pin-project crate)等模式。

使用方式:先判断是否需要 Pin,再选择固定策略,最后处理投影。验证可用 cargo expand 检查类型是否为 Unpin、查看 async 状态机,用 cargo +nightly miri test 测试。

适用场景:实现 Future、自引用结构体、异步状态机、生成器,以及需要零成本抽象的内存稳定性保证。

限制与注意:不安全投影必须写 SAFETY 注释;固定后不可移动;投影需保持结构固定;Drop 实现需尊重固定;常见陷阱包括忘记固定 Future、移动已固定值、错误投影。相关技能有 rust-async、rust-unsafe、rust-ownership、rust-type-driven、rust-performance。中文版本见 SKILL_ZH.md。