Rust Code Navigator

作者 actionbook5c40d3ad7851无许可证1.5K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库6周前更新

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

AI 生成的概览

使用 LSP 操作(如跳转定义、查找引用、悬停信息)导航 Rust 代码。

功能
该技能指导智能体使用语言服务器协议操作来浏览 Rust 代码库。涵盖跳转定义、查找引用、悬停信息、工作区符号搜索和文档符号,并规定了报告定义与引用的输出格式。它还列出常见用户说法与对应 LSP 操作的映射,以及服务器缺失或符号歧义时的错误处理。
适用场景
适用于有人询问某个 Rust 符号在哪里定义、谁在使用它或它是什么类型时。也适合重构前的影响评估和浏览大型 Rust 项目。
运行要求
需要 LSP 工具和正在运行的 rust-analyzer 服务器,以及对工作区的 Read 和 Glob 访问权限。不附带脚本,仅为说明文档。

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

来源与署名

来源:actionbook/rust-skills位于skills/rust-code-navigator提交5c40d3a

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架