rust-trait-explorer について
LSP とコード検索で Rust のトレイト実装やポリモーフィズムを調べるスキルです。実装型や型が実装するトレイト、階層関係を確認できます。
主な機能
- 01トレイト実装型の検索
- 02型が実装するトレイトの一覧
- 03トレイト階層の確認
- 04実装カバレッジの確認
- 05包括的実装の特定
活用シーン
- 01あるトレイトの実装型を検索
- 02型が実装するトレイトを確認
- 03トレイトの継承関係を把握
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ actionbook/ rust-skills --skill rust-trait-explorerインストール後、Claude Code で/rust-trait-explorerを入力して読み込まれたか確認します。
詳細
Rust Trait Explorer
トレイトの実装を見つけ、ポリモーフィックな設計を理解します。
使い方
/rust-trait-explorer <TraitName|StructName>
例:
/rust-trait-explorer Handler-Handlerトレイトを実装するすべての型を見つけます/rust-trait-explorer MyStruct-MyStructが実装するすべてのトレイトを見つけます
LSP の操作
実装へ移動
トレイトのすべての実装を見つけます。
LSP(
operation: "goToImplementation",
filePath: "src/traits.rs",
line: 10,
character: 11
)
次の場合に使用します:
- トレイト名がわかっている
- すべての実装型を見つけたい
- ポリモーフィックなコードを理解したい
ワークフロー
トレイトの実装型を見つける
User: "Who implements the Handler trait?"
│
▼
[1] Find trait definition
LSP(goToDefinition) or workspaceSymbol
│
▼
[2] Get implementations
LSP(goToImplementation)
│
▼
[3] For each impl, get details
LSP(documentSymbol) for methods
│
▼
[4] Generate implementation map
型が実装するトレイトを見つける
User: "What traits does MyStruct implement?"
│
▼
[1] Find struct definition
│
▼
[2] Search for "impl * for MyStruct"
Grep pattern matching
│
▼
[3] Get trait details for each
│
▼
[4] Generate trait list
出力形式
トレイトの実装型
## Implementations of `Handler`
**Trait defined at:** src/traits.rs:15
```rust
pub trait Handler {
fn handle(&self, request: Request) -> Response;
fn name(&self) -> &str;
}
```
### Implementors (4)
| Type | Location | Notes |
|------|----------|-------|
| AuthHandler | src/handlers/auth.rs:20 | Handles authentication |
| ApiHandler | src/handlers/api.rs:15 | REST API endpoints |
| WebSocketHandler | src/handlers/ws.rs:10 | WebSocket connections |
| MockHandler | tests/mocks.rs:5 | Test mock |
### Implementation Details
#### AuthHandler
```rust
impl Handler for AuthHandler {
fn handle(&self, request: Request) -> Response {
// Authentication logic
}
fn name(&self) -> &str {
"auth"
}
}
```
#### ApiHandler
```rust
impl Handler for ApiHandler {
fn handle(&self, request: Request) -> Response {
// API routing logic
}
fn name(&self) -> &str {
"api"
}
}
```
型が実装するトレイト
## Traits implemented by `User`
**Struct defined at:** src/models/user.rs:10
### Standard Library Traits
| Trait | Derived/Manual | Notes |
|-------|----------------|-------|
| Debug | #[derive] | Auto-generated |
| Clone | #[derive] | Auto-generated |
| Default | manual | Custom defaults |
| Display | manual | User-friendly output |
### Serde Traits
| Trait | Location |
|-------|----------|
| Serialize | #[derive] |
| Deserialize | #[derive] |
### Project Traits
| Trait | Location | Methods |
|-------|----------|---------|
| Entity | src/db/entity.rs:30 | id(), created_at() |
| Validatable | src/validation.rs:15 | validate() |
### Implementation Hierarchy
```
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 Hierarchy
┌─────────────┐
│ Error │ (std)
└──────┬──────┘
│
┌────────────┼────────────┐
│ │ │
┌───────▼───────┐ ┌──▼──┐ ┌───────▼───────┐
│ AppError │ │ ... │ │ DbError │
└───────┬───────┘ └─────┘ └───────┬───────┘
│ │
┌───────▼───────┐ ┌───────▼───────┐
│ AuthError │ │ QueryError │
└───────────────┘ └───────────────┘
分析機能
網羅性の確認
## Trait Implementation Coverage
Trait: Handler (3 required methods)
| Implementor | handle() | name() | priority() | Complete |
|-------------|----------|--------|------------|----------|
| AuthHandler | ✅ | ✅ | ✅ | Yes |
| ApiHandler | ✅ | ✅ | ❌ default | Yes |
| MockHandler | ✅ | ✅ | ✅ | Yes |
ブランケット実装
## Blanket Implementations
The following blanket impls may apply to your types:
| Trait | Blanket Impl | Applies To |
|-------|--------------|------------|
| From<T> | `impl<T> From<T> for T` | All types |
| Into<U> | `impl<T, U> Into<U> for T where U: From<T>` | Types with From |
| ToString | `impl<T: Display> ToString for T` | Types with Display |
よくあるパターン
| ユーザーの発言 | 操作 |
|---|---|
| "X を実装しているのは誰?" | トレイトで goToImplementation を実行 |
| "Y はどのトレイトを impl している?" | impl * for Y を Grep で検索 |
| "トレイト階層を表示して" | スーパー トレイトを再帰的に見つける |
| "X は Send + Sync ですか?" | std トレイトの実装を確認 |
関連スキル
| 場合 | 参照先 |
|---|---|
| impl へ移動する | rust-code-navigator |
| 呼び出し関係 | rust-call-graph |
| プロジェクト構造 | rust-symbol-analyzer |
| 安全なリファクタリング | rust-refactor-helper |
コメント
Markdown 対応