--- name: rust-trait-explorer description: "Explore Rust trait implementations using LSP. Triggers on: /trait-impl, find implementations, who implements, trait 实现, 谁实现了, 实现了哪些trait" argument-hint: "" allowed-tools: ["LSP", "Read", "Glob", "Grep"] --- # Rust Trait Explorer Discover trait implementations and understand polymorphic designs. ## Usage ``` /rust-trait-explorer ``` **Examples:** - `/rust-trait-explorer Handler` - Find all implementors of Handler trait - `/rust-trait-explorer MyStruct` - Find all traits implemented by MyStruct ## LSP Operations ### Go to Implementation Find all implementations of a trait. ``` LSP( operation: "goToImplementation", filePath: "src/traits.rs", line: 10, character: 11 ) ``` **Use when:** - Trait name is known - Want to find all implementors - Understanding polymorphic code ## Workflow ### Find Trait Implementors ``` 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 ``` ### Find Traits for a Type ``` 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 ``` ## Output Format ### Trait Implementors ``` ## 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 for a Type ``` ## 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 Visualization ``` ## Trait Hierarchy ┌─────────────┐ │ Error │ (std) └──────┬──────┘ │ ┌────────────┼────────────┐ │ │ │ ┌───────▼───────┐ ┌──▼──┐ ┌───────▼───────┐ │ AppError │ │ ... │ │ DbError │ └───────┬───────┘ └─────┘ └───────┬───────┘ │ │ ┌───────▼───────┐ ┌───────▼───────┐ │ AuthError │ │ QueryError │ └───────────────┘ └───────────────┘ ``` ## Analysis Features ### Coverage Check ``` ## Trait Implementation Coverage Trait: Handler (3 required methods) | Implementor | handle() | name() | priority() | Complete | |-------------|----------|--------|------------|----------| | AuthHandler | ✅ | ✅ | ✅ | Yes | | ApiHandler | ✅ | ✅ | ❌ default | Yes | | MockHandler | ✅ | ✅ | ✅ | Yes | ``` ### Blanket Implementations ``` ## Blanket Implementations The following blanket impls may apply to your types: | Trait | Blanket Impl | Applies To | |-------|--------------|------------| | From | `impl From for T` | All types | | Into | `impl Into for T where U: From` | Types with From | | ToString | `impl ToString for T` | Types with Display | ``` ## Common Patterns | User Says | Action | |-----------|--------| | "Who implements X?" | goToImplementation on trait | | "What traits does Y impl?" | Grep for `impl * for Y` | | "Show trait hierarchy" | Find super-traits recursively | | "Is X: Send + Sync?" | Check std trait impls | ## Related Skills | When | See | |------|-----| | Navigate to impl | rust-code-navigator | | Call relationships | rust-call-graph | | Project structure | rust-symbol-analyzer | | Safe refactoring | rust-refactor-helper |