下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“rust-async-patterns”。 创建一个异步函数,从 5 个 URL 获取数据,并发限制为 3
预期结果:
使用 stream::iter 和 buffer_unordered(3) 并发处理 URL,返回 Vec 类型的 Results,对每个 fetch 操作进行正确的错误处理。
正在使用“rust-async-patterns”。 如何在异步任务之间安全地共享状态?
预期结果:
推荐对读多写少的工作负载使用 Arc<RwLock<T>>,对写多场景使用 Arc<Mutex<T>>,并提供展示 .read().await 和 .write().await 模式的示例。
安全审计
安全All 51 static analysis findings are false positives. The skill contains documentation-only markdown files with Rust code examples. The static analyzer incorrectly flagged: markdown code fence backticks as shell execution, tokio::spawn (async task spawning) as process execution, SQL queries as system reconnaissance, and example URLs as hardcoded secrets. No executable code or security risks present.
质量评分
你能构建什么
网络服务开发
使用 Tokio 任务和通道构建并发 HTTP 服务器或 WebSocket 处理器,用于请求分发和优雅关闭。
数据管道实现
使用异步流处理流式数据,使用 buffer_unordered 进行受控并发,并实现正确的错误传播。
异步代码调试
诊断死锁问题、理解任务取消、并为异步应用程序实现正确的追踪 instrumentation。
试试这些提示
帮我设置一个基本的 Tokio 异步应用程序,带有正确的错误处理。我需要并发地从多个 URL 获取数据并优雅地处理任何失败。
我需要实现一个工作者池模式,其中多个生产者任务将工作项发送给消费者任务。展示如何使用带有正确关闭处理的 mpsc 通道。
我的异步服务器需要处理 SIGINT/SIGTERM 并干净地关闭。所有进行中的请求应在强制终止前 30 秒内完成。使用 CancellationToken 实现这一点。
我正在将大型数据集作为流进行处理。实现分块处理,使用 buffer_unordered 将并发限制为 10 个项目,并对失败项目进行正确的错误处理。
最佳实践
- 在长时间运行的任务中使用 tokio::select! 进行 future 竞速并实现取消点
- 优先使用通道而非共享状态进行任务通信,以避免死锁并减少锁竞争
- 使用 tracing 属性 instrument 异步函数,并尊重 CancellationToken 实现优雅关闭
避免
- 使用 std::thread::sleep 或阻塞 I/O 操作阻塞异步代码,导致运行时饥饿
- 在 await 点持有锁,当多个任务争用相同锁时可能导致死锁
- 生成无边界任务而不使用 semaphore 或 JoinSet 限制,导致资源耗尽