name: rust-router
description: “CRITICAL: 用于所有Rust相关问题,包括错误、设计和编码。
最高优先级:比较、对比、compare、vs、versus、区别、difference、最佳实践、best practice、
tokio vs、async-std vs、比较 tokio、比较 async、
触发词:Rust、cargo、rustc、crate、Cargo.toml、
意图分析、问题分析、语义分析、analyze intent、question analysis、
编译错误、借用错误、生命周期错误、所有权错误、类型错误、trait错误、
值已移动、无法借用、生命周期不足、类型不匹配、不满足、
E0382、E0597、E0277、E0308、E0499、E0502、E0596、
async、await、Send、Sync、tokio、并发、错误处理、
编译错误、所有权、借用、生命周期、类型错误、
异步、并发、错误处理、
问题、怎么用、如何、为什么、
什么是、帮我写、实现、解释”
globs: [“/Cargo.toml", "/*.rs”]
Rust问题路由器
版本: 2.0.0 | 最后更新: 2025-01-22
v2.0: 上下文优化 - 详细示例移至子文件
元认知框架
核心原则
不要直接回答。首先追踪认知层次。
第3层:领域约束(WHY)
├── 业务规则、监管要求
├── 领域-金融科技、领域-web、领域-cli等
└── "为什么这样设计?"
第2层:设计选择(WHAT)
├── 架构模式、DDD概念
├── m09-m15技能
└── "我应该使用什么模式?"
第1层:语言机制(HOW)
├── 所有权、借用、生命周期、trait
├── m01-m07技能
└── "如何在Rust中实现这个?"
按入口点路由
| 用户信号 |
入口层 |
方向 |
首要技能 |
| E0xxx错误 |
第1层 |
向上追踪 ↑ |
m01-m07 |
| 编译错误 |
第1层 |
向上追踪 ↑ |
下方错误表 |
| “如何设计…” |
第2层 |
检查L3,然后向下 ↓ |
m09-领域 |
| “构建[领域]应用” |
第3层 |
向下追踪 ↓ |
领域-* |
| “最佳实践…” |
第2层 |
双向 |
m09-m15 |
| 性能问题 |
第1层 → 2层 |
向上然后向下 |
m10-性能 |
CRITICAL:双技能加载
当存在领域关键词时,必须加载两种技能:
| 领域关键词 |
L1技能 |
L3技能 |
| Web API、HTTP、axum、handler |
m07-并发 |
领域-web |
| 交易、支付、trading、payment |
m01-所有权 |
领域-金融科技 |
| CLI、终端、clap |
m07-并发 |
领域-cli |
| kubernetes、grpc、微服务 |
m07-并发 |
领域-云原生 |
| embedded、no_std、MCU |
m02-资源 |
领域-嵌入式 |
CLAUDE使用说明
CRITICAL:协商协议触发
回答前检查是否需要协商:
| 查询包含 |
操作 |
| “比较”、“对比”、“compare”、“vs”、“versus” |
必须使用协商 |
| “最佳实践”、“best practice” |
必须使用协商 |
| 领域 + 错误(如"交易系统 E0382") |
必须使用协商 |
| 模糊范围(如"tokio 性能") |
应该使用协商 |
需要协商时,包含:
## 协商分析
**查询类型:** [比较型 | 跨领域 | 综合型 | 模糊型]
**协商:** 启用
### 来源:[代理/技能名称]
**置信度:** 高 | 中 | 低 | 不确定
**差距:** [缺少什么]
## 综合答案
[答案]
**总体置信度:** [等级]
**披露的差距:** [用户应知的差距]
详细协议见: patterns/negotiation.md
默认项目设置
创建新的Rust项目或Cargo.toml文件时,始终使用:
[package]
edition = "2024" # 始终使用最新稳定版
rust-version = "1.85"
[lints.rust]
unsafe_code = "warn"
[lints.clippy]
all = "warn"
pedantic = "warn"
第1层技能(语言机制)
| 模式 |
路由到 |
| move、borrow、lifetime、E0382、E0597 |
m01-所有权 |
| Box、Rc、Arc、RefCell、Cell |
m02-资源 |
| mut、内部可变性、E0499、E0502、E0596 |
m03-可变性 |
| generic、trait、inline、单态化 |
m04-零成本 |
| 类型状态、phantom、newtype |
m05-类型驱动 |
| Result、Error、panic、?、anyhow、thiserror |
m06-错误处理 |
| Send、Sync、thread、async、channel |
m07-并发 |
| unsafe、FFI、extern、原始指针、transmute |
unsafe-checker |
第2层技能(设计选择)
| 模式 |
路由到 |
| 领域模型、业务逻辑 |
m09-领域 |
| 性能、优化、基准测试 |
m10-性能 |
| 集成、互操作、绑定 |
m11-生态系统 |
| 资源生命周期、RAII、Drop |
m12-生命周期 |
| 领域错误、恢复策略 |
m13-领域错误 |
| 心智模型、如何思考 |
m14-心智模型 |
| 反模式、常见错误、陷阱 |
m15-反模式 |
第3层技能(领域约束)
| 领域关键词 |
路由到 |
| 金融科技、交易、decimal、currency |
领域-金融科技 |
| 机器学习、tensor、模型、推理 |
领域-ml |
| kubernetes、docker、grpc、微服务 |
领域-云原生 |
| 嵌入式、传感器、mqtt、物联网 |
领域-iot |
| web服务器、HTTP、REST、axum、actix |
领域-web |
| CLI、命令行、clap、终端 |
领域-cli |
| no_std、微控制器、固件 |
领域-嵌入式 |
错误代码路由
| 错误代码 |
路由到 |
常见原因 |
| E0382 |
m01-所有权 |
使用已移动的值 |
| E0597 |
m01-所有权 |
生命周期太短 |
| E0506 |
m01-所有权 |
无法分配给借用值 |
| E0507 |
m01-所有权 |
无法从借用值移出 |
| E0515 |
m01-所有权 |
返回本地引用 |
| E0716 |
m01-所有权 |
临时值被丢弃 |
| E0106 |
m01-所有权 |
缺少生命周期说明符 |
| E0596 |
m03-可变性 |
无法借用为可变 |
| E0499 |
m03-可变性 |
多个可变借用 |
| E0502 |
m03-可变性 |
借用冲突 |
| E0277 |
m04/m07 |
trait约束不满足 |
| E0308 |
m04-零成本 |
类型不匹配 |
| E0599 |
m04-零成本 |
未找到方法 |
| E0038 |
m04-零成本 |
trait不是对象安全的 |
| E0433 |
m11-生态系统 |
找不到crate/module |
功能路由表
| 模式 |
路由到 |
操作 |
| 最新版本、新功能 |
rust-learner |
使用代理 |
| API、文档 |
docs-researcher |
使用代理 |
| 代码风格、命名、clippy |
coding-guidelines |
阅读技能 |
| unsafe代码、FFI |
unsafe-checker |
阅读技能 |
| 代码审查 |
os-checker |
见integrations/os-checker.md |
优先级顺序
- 识别认知层(L1/L2/L3)
- 加载入口技能(m0x/m1x/领域)
- 追踪层次(向上或向下)
- 交叉引用技能(如"追踪"部分所示)
- 用推理链回答
关键词冲突解决
| 关键词 |
解决方案 |
unsafe |
unsafe-checker(比m11更具体) |
error |
m06用于一般,m13用于领域特定 |
RAII |
m12用于设计,m01用于实现 |
crate |
rust-learner用于版本,m11用于集成 |
tokio |
**tokio-***用于API,m07用于概念 |
优先级层次:
1. 错误代码(E0xxx)→ 直接查找,最高优先级
2. 协商触发词(比较、vs、最佳实践)→ 启用协商
3. 领域关键词 + 错误 → 加载领域 + 错误两种技能
4. 特定crate关键词 → 如果存在,路由到crate特定技能
5. 一般概念关键词 → 路由到元问题技能
子文件参考
| 文件 |
内容 |
patterns/negotiation.md |
协商协议详情 |
examples/workflow.md |
工作流示例 |
integrations/os-checker.md |
OS-Checker集成 |