关于 rust
Rust 是一种注重内存安全、并发和性能的系统编程语言。此技能为开发者构建服务、CLI 工具、终端界面、WebAssembly 和其他性能敏感软件提供实用指南。
主要功能
- 01所有权与借用指导
- 02错误处理模式
- 03使用 Tokio 进行异步编程
- 04使用 axum 构建 Web 服务
- 05使用 clap 开发 CLI
- 06测试与基准测试
适用场景
- 01构建内存安全的系统软件
- 02开发异步 Web 服务
- 03创建命令行工具和终端界面
- 04为性能敏感应用进行基准测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill rust安装后在 Claude Code 中输入/rust确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/async-tokio.mdaxum-web.mdcli-applications.mderror-handling.mdownership-and-types.mdratatui-tui.mdrelease-pipeline.mdtesting-and-benchmarks.md详细介绍
Rust
概述
Rust 是一种系统编程语言,专注于安全性、并发性和性能。所有权系统无需垃圾回收即可保证内存安全,而类型系统会在编译时确保线程安全。
适用场景: 系统编程、Web 服务(axum)、CLI 工具(clap)、终端 UI(ratatui)、WebAssembly、性能关键型应用,以及任何需要内存安全且无需运行时开销的场景。
不适用场景: 更看重编译速度而非安全性的快速原型开发、简单的脚本任务,以及团队缺乏 Rust 经验且工期紧张的项目。
快速参考
| 模式 | API / 工具 | 要点 |
|---|---|---|
| 所有权转移 | let b = a; | a 会被移动,之后不可再用 |
| 借用 | &T / &mut T | 一个可变引用或多个不可变引用 |
| 生命周期标注 | fn f<'a>(x: &'a str) -> &'a str | 将输出生命周期与输入绑定 |
| 错误传播 | ? 运算符 | 转换并传播错误 |
| 自定义错误 | thiserror::Error derive | 具有 Display 的结构化错误类型 |
| 临时错误 | anyhow::Result<T> | 为应用程序提供上下文链 |
| 异步运行时 | #[tokio::main] | 异步程序的入口点 |
| 启动任务 | tokio::spawn(async { }) | 并发执行异步任务 |
| HTTP 路由器 | axum::Router::new().route(...) | 使用提取器组合路由 |
| 提取器 | Json<T>, Path<T>, State<T> | 类型安全的请求解析 |
| 序列化 | #[derive(Serialize, Deserialize)] | 使用 serde 派生与格式无关的实现 |
| CLI 解析 | #[derive(Parser)] | 用于解析参数的 clap derive API |
| TUI 渲染 | terminal.draw(|f| { }) | ratatui 即时模式渲染 |
| 基准测试 | criterion::Criterion | 统计基准测试框架 |
| 依赖项审计 | cargo deny check | 审计许可证、漏洞和来源 |
| 二进制发布 | cargo dist init | 跨平台二进制分发 |
| 更新日志 | release-plz update | 自动更新 semver 版本和更新日志 |
常见错误
| 错误 | 正确做法 |
|---|---|
| 返回局部变量的引用 | 返回拥有所有权的类型,或使用生命周期参数 |
在库代码中使用 unwrap() | 返回 Result,由调用方决定 |
为满足借用检查器而调用 clone() | 重构代码以避免借用冲突 |
| 在异步上下文中阻塞 | 使用 tokio::task::spawn_blocking |
| 未使用同步机制的共享可变状态 | 使用 Arc<Mutex<T>> 或通道 |
可用 &str 时使用 String | 在函数参数中接受 &str |
忽略 must_use 警告 | 处理警告,或使用 let _ = 显式丢弃 |
| 枚举变体过大 | 将较大的变体装箱以减小整体体积 |
特征中的 async fn 未指定约束 | 添加 Send 约束,或使用 async-trait crate |
异步测试缺少 #[tokio::test] | 使用 #[tokio::test],而不是 #[test] |
任务委派
- 代码探索:使用
ExploreAgent - 架构审查:使用
TaskAgent - 代码审查:委派给
code-reviewerAgent
如果有
docker技能,请将多阶段容器构建模式委派给它。 如果有github-actions技能,请将 CI 流水线配置委派给它。 如果有openapi技能,请将 API 规范和代码生成委派给它。
参考资料
评论
支持 Markdown