name: rust-trait-explorer description: “使用LSP探索Rust trait实现。触发词:/trait-impl, find implementations, who implements, trait 实现, 谁实现了, 实现了哪些trait” argument-hint: “<TraitName|StructName>” allowed-tools: [“LSP”, “Read”, “Glob”, “Grep”]
Rust Trait 探索器
发现trait实现并理解多态设计。
使用方法
/rust-trait-explorer <TraitName|StructName>
示例:
/rust-trait-explorer Handler- 查找Handler trait的所有实现者/rust-trait-explorer MyStruct- 查找MyStruct实现的所有trait
LSP操作
跳转到实现
查找trait的所有实现。
LSP(
operation: "goToImplementation",
filePath: "src/traits.rs",
line: 10,
character: 11
)
使用时机:
- 已知trait名称
- 想要查找所有实现者
- 理解多态代码
工作流程
查找Trait实现者
用户: "谁实现了Handler trait?"
│
▼
[1] 查找trait定义
LSP(goToDefinition) 或 workspaceSymbol
│
▼
[2] 获取实现
LSP(goToImplementation)
│
▼
[3] 为每个实现获取详细信息
LSP(documentSymbol) 获取方法
│
▼
[4] 生成实现映射
查找类型的Trait
用户: "MyStruct实现了哪些trait?"
│
▼
[1] 查找结构体定义
│
▼
[2] 搜索 "impl * for MyStruct"
匹配模式的Grep
│
▼
[3] 为每个trait获取详细信息
│
▼
[4] 生成trait列表
输出格式
Trait实现者
## `Handler`的实现
**Trait定义位置:** src/traits.rs:15
```rust
pub trait Handler {
fn handle(&self, request: Request) -> Response;
fn name(&self) -> &str;
}
```
### 实现者 (4)
| 类型 | 位置 | 备注 |
|------|----------|-------|
| AuthHandler | src/handlers/auth.rs:20 | 处理认证 |
| ApiHandler | src/handlers/api.rs:15 | REST API端点 |
| WebSocketHandler | src/handlers/ws.rs:10 | WebSocket连接 |
| MockHandler | tests/mocks.rs:5 | 测试模拟 |
### 实现详情
#### AuthHandler
```rust
impl Handler for AuthHandler {
fn handle(&self, request: Request) -> Response {
// 认证逻辑
}
fn name(&self) -> &str {
"auth"
}
}
```
#### ApiHandler
```rust
impl Handler for ApiHandler {
fn handle(&self, request: Request) -> Response {
// API路由逻辑
}
fn name(&self) -> &str {
"api"
}
}
```
类型的Trait
## `User`实现的trait
**结构体定义位置:** src/models/user.rs:10
### 标准库Trait
| Trait | 派生/手动 | 备注 |
|-------|----------------|-------|
| Debug | #[derive] | 自动生成 |
| Clone | #[derive] | 自动生成 |
| Default | manual | 自定义默认值 |
| Display | manual | 用户友好输出 |
### Serde Trait
| Trait | 位置 |
|-------|----------|
| Serialize | #[derive] |
| Deserialize | #[derive] |
### 项目Trait
| Trait | 位置 | 方法 |
|-------|----------|---------|
| Entity | src/db/entity.rs:30 | id(), created_at() |
| Validatable | src/validation.rs:15 | validate() |
### 实现层次结构
```
User
├── derive
│ ├── Debug
│ ├── Clone
│ ├── Serialize
│ └── Deserialize
└── impl
├── Default (src/models/user.rs:50)
├── Display (src/models/user.rs:60)
├── Entity (src/models/user.rs:70)
└── Validatable (src/models/user.rs:85)
```
Trait层次结构可视化
## Trait层次结构
┌─────────────┐
│ Error │ (std)
└──────┬──────┘
│
┌────────────┼────────────┐
│ │ │
┌───────▼───────┐ ┌──▼──┐ ┌───────▼───────┐
│ AppError │ │ ... │ │ DbError │
└───────┬───────┘ └─────┘ └───────┬───────┘
│ │
┌───────▼───────┐ ┌───────▼───────┐
│ AuthError │ │ QueryError │
└───────────────┘ └───────────────┘
分析功能
覆盖率检查
## Trait实现覆盖率
Trait: Handler (3个必需方法)
| 实现者 | handle() | name() | priority() | 完成度 |
|-------------|----------|--------|------------|----------|
| AuthHandler | ✅ | ✅ | ✅ | 是 |
| ApiHandler | ✅ | ✅ | ❌ default | 是 |
| MockHandler | ✅ | ✅ | ✅ | 是 |
泛型实现
## 泛型实现
以下泛型实现可能适用于您的类型:
| Trait | 泛型实现 | 适用于 |
|-------|--------------|------------|
| From<T> | `impl<T> From<T> for T` | 所有类型 |
| Into<U> | `impl<T, U> Into<U> for T where U: From<T>` | 具有From的类型 |
| ToString | `impl<T: Display> ToString for T` | 具有Display的类型 |
常见模式
| 用户说 | 操作 |
|---|---|
| “谁实现了X?” | 在trait上执行goToImplementation |
| “Y实现了哪些trait?” | 搜索 impl * for Y |
| “显示trait层次结构” | 递归查找父trait |
| “X是否实现Send + Sync?” | 检查标准trait实现 |
相关技能
| 时机 | 查看 |
|---|---|
| 导航到实现 | rust-code-navigator |
| 调用关系 | rust-call-graph |
| 项目结构 | rust-symbol-analyzer |
| 安全重构 | rust-refactor-helper |