rust-code-navigator
Installation
Summary
Navigate Rust code using Language Server Protocol for definitions, references, and symbol information.
- Supports three core LSP operations: go to definition, find references, and hover information for type/documentation lookup
- Handles workspace symbol search with disambiguation when multiple results exist, plus file-specific navigation with line numbers
- Includes error handling for missing rust-analyzer, typos, and generics/macros that produce multiple definitions
- Output formatted as structured tables and code blocks showing file paths, context, and usage patterns across the codebase
SKILL.md
Rust Code Navigator
Navigate large Rust codebases efficiently using Language Server Protocol.
Usage
/rust-code-navigator <symbol> [in file.rs:line]
Examples:
/rust-code-navigator parse_config- Find definition of parse_config/rust-code-navigator MyStruct in src/lib.rs:42- Navigate from specific location
LSP Operations
1. Go to Definition
Find where a symbol is defined.
LSP(
operation: "goToDefinition",
filePath: "src/main.rs",
line: 25,
character: 10
)
Use when:
- User asks "where is X defined?"
- User wants to understand a type/function
- Ctrl+click equivalent
2. Find References
Find all usages of a symbol.
LSP(
operation: "findReferences",
filePath: "src/lib.rs",
line: 15,
character: 8
)
Use when:
- User asks "who uses X?"
- Before refactoring/renaming
- Understanding impact of changes
3. Hover Information
Get type and documentation for a symbol.
LSP(
operation: "hover",
filePath: "src/main.rs",
line: 30,
character: 15
)
Use when:
- User asks "what type is X?"
- User wants documentation
- Quick type checking
Workflow
User: "Where is the Config struct defined?"
│
▼
[1] Search for "Config" in workspace
LSP(operation: "workspaceSymbol", ...)
│
▼
[2] If multiple results, ask user to clarify
│
▼
[3] Go to definition
LSP(operation: "goToDefinition", ...)
│
▼
[4] Show file path and context
Read surrounding code for context
Output Format
Definition Found
## Config (struct)
**Defined in:** `src/config.rs:15`
```rust
#[derive(Debug, Clone)]
pub struct Config {
pub name: String,
pub port: u16,
pub debug: bool,
}
```
**Documentation:** Configuration for the application server.
References Found
## References to `Config` (5 found)
| Location | Context |
|----------|---------|
| src/main.rs:10 | `let config = Config::load()?;` |
| src/server.rs:25 | `fn new(config: Config) -> Self` |
| src/server.rs:42 | `self.config.port` |
| src/tests.rs:15 | `Config::default()` |
| src/cli.rs:8 | `config: Option<Config>` |
Common Patterns
| User Says | LSP Operation |
|---|---|
| "Where is X defined?" | goToDefinition |
| "Who uses X?" | findReferences |
| "What type is X?" | hover |
| "Find all structs" | workspaceSymbol |
| "What's in this file?" | documentSymbol |
Error Handling
| Error | Cause | Solution |
|---|---|---|
| "No LSP server" | rust-analyzer not running | Suggest: rustup component add rust-analyzer |
| "Symbol not found" | Typo or not in scope | Search with workspaceSymbol first |
| "Multiple definitions" | Generics or macros | Show all and let user choose |
Related Skills
| When | See |
|---|---|
| Call relationships | rust-call-graph |
| Project structure | rust-symbol-analyzer |
| Trait implementations | rust-trait-explorer |
| Safe refactoring | rust-refactor-helper |
Weekly Installs
617
Repository
zhanghandong/rust-skillsGitHub Stars
1.1K
First Seen
1 day ago
Security Audits