Rust Code Navigator

by actionbook5c40d3ad7851No license1.5K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 6 weeks ago

Navigate Rust code using LSP. Triggers on: /navigate, go to definition, find references, where is defined, 跳转定义, 查找引用, 定义在哪, 谁用了这个

Instructions onlySoftware Development
AI-generated overview

Navigates Rust code with LSP operations such as go-to-definition, find references and hover.

What it does
This skill guides an agent through using Language Server Protocol operations to navigate Rust codebases. It covers go-to-definition, find-references, hover information, workspace symbol search and document symbols, and it defines output formats for reporting definitions and references. It also lists common user phrasings mapped to the matching LSP operation and error handling for missing servers or ambiguous symbols.
When to use it
Use it when someone asks where a Rust symbol is defined, who uses it, or what type it has. It is also suited to pre-refactoring impact checks and exploring large Rust projects.
Requirements
Requires an LSP tool and a running rust-analyzer server, plus Read and Glob access to the workspace. No scripts are shipped; the skill is instructions only.

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 SaysLSP 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

ErrorCauseSolution
"No LSP server"rust-analyzer not runningSuggest: rustup component add rust-analyzer
"Symbol not found"Typo or not in scopeSearch with workspaceSymbol first
"Multiple definitions"Generics or macrosShow all and let user choose

Related Skills

WhenSee
Call relationshipsrust-call-graph
Project structurerust-symbol-analyzer
Trait implementationsrust-trait-explorer
Safe refactoringrust-refactor-helper

Source and attribution

Source:actionbook/rust-skillsinskills/rust-code-navigatorat commit5c40d3a

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal