
Rust Call Graph
- 713 installs
- 1.3k repo stars
- Updated May 24, 2026
- zhanghandong/rust-skills
This is a copy of rust-call-graph by actionbook - installs and ranking accrue to the original listing.
rust-call-graph is a Rust skills command that visualizes function callers, callees, and deep call hierarchies via LSP for developers who need fast call-relationship maps without manual grep tracing.
About
rust-call-graph is a rust-skills slash command that builds function call graphs using LSP call hierarchy instead of manual source tracing. Invoke `/rust-call-graph <function_name>` with optional `--depth N` (default 3) and `--direction in|out|both` to list callers, callees, or both. The skill triggers on phrases like call hierarchy, who calls, what calls, and related Chinese query terms. Developers reach for rust-call-graph when refactoring Rust services, auditing unsafe call paths, or onboarding to unfamiliar crates. Allowed tools are LSP, Read, and Glob, so results stay tied to the language server view of the workspace rather than static text search alone.
- Visualizes Rust function call relationships using LSP call hierarchy
- Supports --depth N (default 3) and --direction in|out|both options
- Three LSP operations: prepareCallHierarchy, incomingCalls, outgoingCalls
- Works with /rust-call-graph slash command and natural language triggers
- Combines workspaceSymbol, grep, and LSP for accurate location discovery
Rust Call Graph by the numbers
- 713 all-time installs (skills.sh)
- +6 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/zhanghandong/rust-skills --skill rust-call-graphAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 713 |
|---|---|
| repo stars | ★ 1.3k |
| Security audit | 3 / 3 scanners passed |
| Last updated | May 24, 2026 |
| Repository | zhanghandong/rust-skills ↗ |
How do you visualize Rust function call hierarchies?
Instantly visualize Rust function callers, callees, and deep call hierarchies without manual tracing.
Who is it for?
Rust developers refactoring or debugging who need caller and callee maps for a specific function without manual ripgrep tracing.
Skip if: Non-Rust codebases, projects without a working Rust LSP, or static analysis needs beyond call hierarchy such as data-flow or type graphs.
When should I use this skill?
A developer asks who calls a Rust function, what it calls, or requests a call graph with depth and direction options.
What you get
LSP call-hierarchy maps showing callers, callees, and depth-limited traversal for a named function.
- call hierarchy visualization for named function
By the numbers
- Default call-hierarchy traversal depth is 3 levels
- Supports three direction modes: in, out, both
Files
Rust Call Graph
Visualize function call relationships using LSP call hierarchy.
Usage
/rust-call-graph <function_name> [--depth N] [--direction in|out|both]Options:
--depth N: How many levels to traverse (default: 3)--direction:in(callers),out(callees),both
Examples:
/rust-call-graph process_request- Show both callers and callees/rust-call-graph handle_error --direction in- Show only callers/rust-call-graph main --direction out --depth 5- Deep callee analysis
LSP Operations
1. Prepare Call Hierarchy
Get the call hierarchy item for a function.
LSP(
operation: "prepareCallHierarchy",
filePath: "src/handler.rs",
line: 45,
character: 8
)2. Incoming Calls (Who calls this?)
LSP(
operation: "incomingCalls",
filePath: "src/handler.rs",
line: 45,
character: 8
)3. Outgoing Calls (What does this call?)
LSP(
operation: "outgoingCalls",
filePath: "src/handler.rs",
line: 45,
character: 8
)Workflow
User: "Show call graph for process_request"
│
▼
[1] Find function location
LSP(workspaceSymbol) or Grep
│
▼
[2] Prepare call hierarchy
LSP(prepareCallHierarchy)
│
▼
[3] Get incoming calls (callers)
LSP(incomingCalls)
│
▼
[4] Get outgoing calls (callees)
LSP(outgoingCalls)
│
▼
[5] Recursively expand to depth N
│
▼
[6] Generate ASCII visualizationOutput Format
Incoming Calls (Who calls this?)
## Callers of `process_request`
main
└── run_server
└── handle_connection
└── process_request ◄── YOU ARE HEREOutgoing Calls (What does this call?)
## Callees of `process_request`
process_request ◄── YOU ARE HERE
├── parse_headers
│ └── validate_header
├── authenticate
│ ├── check_token
│ └── load_user
├── execute_handler
│ └── [dynamic dispatch]
└── send_response
└── serialize_bodyBidirectional (Both)
## Call Graph for `process_request`
┌─────────────────┐
│ main │
└────────┬────────┘
│
┌────────▼────────┐
│ run_server │
└────────┬────────┘
│
┌────────▼────────┐
│handle_connection│
└────────┬────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
┌───────▼───────┐ ┌───────▼───────┐ ┌───────▼───────┐
│ parse_headers │ │ authenticate │ │send_response │
└───────────────┘ └───────┬───────┘ └───────────────┘
│
┌───────┴───────┐
│ │
┌──────▼──────┐ ┌──────▼──────┐
│ check_token │ │ load_user │
└─────────────┘ └─────────────┘Analysis Insights
After generating the call graph, provide insights:
## Analysis
**Entry Points:** main, test_process_request
**Leaf Functions:** validate_header, serialize_body
**Hot Path:** main → run_server → handle_connection → process_request
**Complexity:** 12 functions, 3 levels deep
**Potential Issues:**
- `authenticate` has high fan-out (4 callees)
- `process_request` is called from 3 places (consider if this is intentional)Common Patterns
| User Says | Direction | Use Case |
|---|---|---|
| "Who calls X?" | incoming | Impact analysis |
| "What does X call?" | outgoing | Understanding implementation |
| "Show call graph" | both | Full picture |
| "Trace from main to X" | outgoing | Execution path |
Visualization Options
| Style | Best For |
|---|---|
| Tree (default) | Simple hierarchies |
| Box diagram | Complex relationships |
| Flat list | Many connections |
| Mermaid | Export to docs |
Mermaid Export
graph TD
main --> run_server
run_server --> handle_connection
handle_connection --> process_request
process_request --> parse_headers
process_request --> authenticate
process_request --> send_responseRelated Skills
| When | See |
|---|---|
| Find definition | rust-code-navigator |
| Project structure | rust-symbol-analyzer |
| Trait implementations | rust-trait-explorer |
| Safe refactoring | rust-refactor-helper |
Related skills
How it compares
Prefer rust-call-graph over text search when you need LSP-accurate caller and callee hierarchy with configurable depth.
FAQ
What is the default depth for rust-call-graph?
rust-call-graph defaults to depth 3 when `--depth N` is omitted, traversing three levels of callers or callees from the named Rust function.
How do you show only callers in rust-call-graph?
rust-call-graph accepts `--direction in` to list incoming callers, `--direction out` for callees, or `--direction both` for a combined hierarchy view.
Is Rust Call Graph safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.