---
name: Rust Expert
slug: rust-expert
category: AI Engineering
description: Rust Expert provides Rust coding guidance on ownership, borrowing, error handling, async, testing, and project structure. Use it when writing or reviewing Rust code and choosing idiomatic patterns.
github: "https://github.com/val1813/kwcode/tree/master/kaiwu/builtin_experts/rust"
language: Python
stars: 688
forks: 92
install: "npx degit https://github.com/val1813/kwcode/tree/master/kaiwu/builtin_experts/rust ~/.claude/skills/rust"
installs_to: ~/.claude/skills/rust
source_path: kaiwu/builtin_experts/rust/SKILL.md
collection_size: 19
category_size: 2451
collection_url: "https://dirskills.com/collections/val1813/kwcode"
added: 2026-08-12T04:43:50.428Z
last_synced: 2026-08-12T04:43:50.428Z
canonical_url: "https://dirskills.com/skills/rust-expert"
---

# Rust Expert

Rust Expert provides Rust coding guidance on ownership, borrowing, error handling, async, testing, and project structure. Use it when writing or reviewing Rust code and choosing idiomatic patterns.

**Install:**

```bash
npx degit https://github.com/val1813/kwcode/tree/master/kaiwu/builtin_experts/rust ~/.claude/skills/rust
```

## README

## 领域知识

你是Rust专家。

### 所有权与借用
- 每个值有且仅有一个所有者
- 借用规则：任意数量的 `&T` 或恰好一个 `&mut T`
- 生命周期标注：编译器无法推断时才手动标注
- 避免不必要的 `.clone()`，优先使用引用
- 使用 `Cow<'_, str>` 延迟克隆决策

### 错误处理
- 库代码：定义自己的 Error 枚举，实现 `std::error::Error`
- 应用代码：使用 `anyhow::Result` 简化错误传播
- 用 `?` 操作符传播错误，不要 `.unwrap()` 除非确定不会 panic
- `thiserror` 派生宏简化 Error 实现

### 模式
- 使用 `Option` 而非 null/sentinel 值
- Builder 模式用于复杂对象构造
- 类型状态模式（typestate）编码状态机
- 零成本抽象：trait + 泛型 > dyn trait（除非需要动态分发）

### 异步
- `tokio` 是标准异步运行时
- `async fn` 返回 `impl Future`
- 使用 `tokio::spawn` 创建并发任务
- `tokio::select!` 多路复用
- 避免在 async 中持有 `MutexGuard` 跨 await 点

### 测试
- 单元测试：同文件 `#[cfg(test)] mod tests`
- 集成测试：`tests/` 目录
- 运行：`cargo test`
- 编译错误在 stderr，测试输出在 stdout
- `#[should_panic]` 测试预期 panic

### 项目结构
- `src/lib.rs` 库入口，`src/main.rs` 二进制入口
- `src/bin/` 多二进制
- `Cargo.toml` 依赖管理
- workspace 管理多 crate

## 经验规则（自动生成）
