RustTrait探索器Skill rust-trait-explorer

Rust Trait 探索器是一款专门用于分析和探索Rust编程语言中trait实现关系的工具。通过集成LSP(Language Server Protocol),该技能能够快速查找trait的所有实现者、分析类型实现的trait集合、可视化trait层次结构,并提供覆盖率检查等功能。关键词:Rust trait分析,LSP代码探索,多态设计,trait实现查找,Rust代码导航,编程辅助工具,软件开发效率

后端开发 0 次安装 0 次浏览 更新于 2/27/2026

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