用途
rust-code-navigator 用于在大型 Rust 代码库中高效导航,基于 Language Server Protocol(LSP)实现符号定位与引用分析。它帮助开发者快速回答“某符号在哪里定义”“谁使用了它”“它是什么类型”等问题。
主要能力
该技能封装了多种 LSP 操作:
-
跳转定义(goToDefinition):查找符号定义位置。适用于用户询问“X 在哪里定义”、想理解某个类型或函数,或等价于 Ctrl+click 的场景。
-
查找引用(findReferences):查找符号的所有使用位置。适用于用户询问“谁用了 X”、重构或重命名之前、以及评估改动影响范围。
-
悬停信息(hover):获取符号的类型与文档。适用于用户询问“X 是什么类型”、想查看文档、或快速进行类型检查。
此外,工作流中还涉及 workspaceSymbol(在工作区搜索符号)和 documentSymbol(查看文件内符号)等操作。
使用方式
调用格式:
/rust-code-navigator <symbol> [in file.rs:line]
示例:
/rust-code-navigator parse_config—— 查找 parse_config 的定义/rust-code-navigator MyStruct in src/lib.rs:42—— 从指定位置开始导航
典型工作流:用户询问“Config 结构体在哪里定义?”后,先在 workspace 中搜索 “Config”(workspaceSymbol),若结果多个则请用户澄清,然后执行 goToDefinition,最后展示文件路径与上下文(读取周边代码)。
输出格式示例:
定义结果会显示符号名与类型、定义位置(如 src/config.rs:15)、代码片段及文档说明。引用结果会以表格列出位置与上下文,例如:
| Location | Context |
|---|---|
| src/main.rs:10 | let config = Config::load()?; |
| src/server.rs:25 | fn new(config: Config) -> Self |
常见用户说法与对应 LSP 操作:
- “Where is X defined?” → goToDefinition
- “Who uses X?” → findReferences
- “What type is X?” → hover
- “Find all structs” → workspaceSymbol
- “What's in this file?” → documentSymbol
适用场景
- 阅读和理解陌生或大型 Rust 代码库
- 重构或重命名前评估影响范围
- 快速查看类型与文档
- 定位符号定义与所有引用
限制与错误处理
- “No LSP server”:rust-analyzer 未运行,建议执行
rustup component add rust-analyzer。 - “Symbol not found”:拼写错误或不在作用域内,建议先用 workspaceSymbol 搜索。
- “Multiple definitions”:泛型或宏导致,展示全部并让用户选择。
相关技能
- 调用关系:rust-call-graph
- 项目结构:rust-symbol-analyzer
- Trait 实现:rust-trait-explorer
- 安全重构:rust-refactor-helper
关于收费、价格、平台支持等具体信息,资料中暂未提供。