SuperAPI AI 工具集

rust-syntax-async-await

编程与开发

查看项目

更新于 10-16 06:18

技能介绍

用途:本技能聚焦 Rust 语言层面的异步机制与 Future trait 契约,与具体执行器无关。适用于用户编写 async fn、调用 .await、在 trait 中定义异步方法、使用 async 闭包,或遇到 future 非 Send、跨 .await 持有非 Send 状态、手写 Future、Pin 相关报错等场景。运行时细节(tokio::spawn、JoinSet、select!)与异步错误模式不在本技能范围。

主要能力:解释 async fn 如何脱糖为返回 impl Future 的状态机、.await 在挂起点做什么、AFIT(1.75)与 RPITIT(1.75)如何与 trait 系统组合、async 闭包(1.85)与 AsyncFn/AsyncFnMut/AsyncFnOnce、Pin 存在的原因,以及哪些状态可跨 .await 持有。

必要用法:async fn 返回匿名 impl Future,应交给执行器或 .await,不要写出具体类型;future 只应 .await 一次,poll 返回 Ready 后再次 poll 属契约层面的未定义行为;跨 .await 的值会成为状态机一部分,多线程执行器要求其为 Send;取消即 drop future,挂起点之后的代码不保证执行;edition 2024 下 RPIT 默认捕获作用域内全部泛型与生命周期,可用 + use<> 退出捕获。

限制:AFIT 方法本身不 dyn 兼容,需显式 Box<dyn Future> 或相关 crate;纯 AFIT 无法声明返回 future 为 Send,需用带 Send 约束的 RPITIT;Pin/Unpin 深入机制、完整 API、示例与反模式见其 references 文件。具体收费、平台与效果资料暂未提供。