SuperAPI AI 工具集

rust-async-concurrency

编程与开发

查看项目

更新于 10-15 21:48

技能介绍

用途:在编写异步 Rust 代码时提供指导,覆盖任务派生、跨任务或线程共享状态、通道与互斥锁的选型,以及 async trait 遇到 Send 约束报错时的处理。也解释 trait 中 async fn 默认不产生 Send future 的原因与规避方式。不涉及 HTTP 服务结构(路由、提取器、中间件,属 rust-web-backend),同步所有权与借用问题属 rust-core-language。

主要能力:运行时选型上,tokio 是事实标准,axum、sqlx、reqwest、tonic 等大多面向它,默认选 tokio;async-std 处于维护状态,不建议新项目使用;smol 仅适合受限或嵌入式场景。关键规则:优先用 std::sync::Mutex,仅在 guard 需跨 .await 持有才用 tokio::sync::Mutex,否则应缩小作用域让 guard 在 await 前析构;Arc<Mutex<T>> 不是默认选择,读多写少用 RwLock,简单计数用原子类型,本身异步的工作用任务加消息传递;不要丢弃在意的 JoinHandle,否则会静默吞掉 panic 或错误,应 .await 或用 JoinSet、tracing 暴露失败;CPU 密集或阻塞 I/O 用 spawn_blocking 卸载;跨 await 持有的值必须 Send,std::sync::MutexGuard 不是 Send,跨 await 持有会编译失败。

使用方式:资料给出强制工作流——写异步代码前并行执行 fuse-ai-pilot:explore-codebase 查找现有运行时、通道与锁模式,fuse-ai-pilot:research-expert 通过 Context7/Exa 核对当前 tokio 与 crate API,mcp__context7__query-docs 拉取所涉原语的准确签名;写完后运行 fuse-ai-pilot:sniper。通道按形态选择:单值回传用 oneshot,多生产者单消费者用 mpsc,广播同一值用 broadcast,只保留最新值用 watch。

适用场景与限制:适合异步 Rust 开发与排错。资料未提供安装命令、收费与价格信息。