Skip to content
rust-refactor-helper logo

Rust Refactor Helper

rust-refactor-helper

Safe Rust refactoring with LSP analysis. Triggers on: /refactor, rename symbol, move function, extract, 重构, 重命名, 提取函数, 安全重构

SKILL.md

Full skill instructions

Rust Refactor Helper

Perform safe refactoring with comprehensive impact analysis.

Usage

/​rust-refactor-helper <action> <target> [--dry-run]

Actions:

  • rename <old> <new> - Rename symbol
  • extract-fn <selection> - Extract to function
  • inline <fn> - Inline function
  • move <symbol> <dest> - Move to module

Examples:

  • /​rust-refactor-helper rename parse_config load_config
  • /​rust-refactor-helper extract-fn src/​main.rs:20-35
  • /​rust-refactor-helper move UserService src/​services/

LSP Operations Used

Pre-Refactor Analysis

# Find all references before renaming
LSP(
  operation: "findReferences",
  filePath: "src/​lib.rs",
  line: 25,
  character: 8
)

# Get symbol info
LSP(
  operation: "hover",
  filePath: "src/​lib.rs",
  line: 25,
  character: 8
)

# Check call hierarchy for move operations
LSP(
  operation: "incomingCalls",
  filePath: "src/​lib.rs",
  line: 25,
  character: 8
)

Refactoring Workflows

1. Rename Symbol

User: "Rename parse_config to load_config"
    │
    ▼
[1] Find symbol definition
    LSP(goToDefinition)
    │
    ▼
[2] Find ALL references
    LSP(findReferences)
    │
    ▼
[3] Categorize by file
    │
    ▼
[4] Check for conflicts
    - Is 'load_config' already used?
    - Are there macro-generated uses?
    │
    ▼
[5] Show impact analysis (--dry-run)
    │
    ▼
[6] Apply changes with Edit tool

Output:

## Rename: parse_config → load_config

### Impact Analysis

**Definition:** src/​config.rs:25
**References found:** 8

| File | Line | Context | Change |
|------|------|---------|--------|
| src/​config.rs | 25 | `pub fn parse_config(` | Definition |
| src/​config.rs | 45 | `parse_config(path)?` | Call |
| src/​main.rs | 12 | `config::parse_config` | Import |
| src/​main.rs | 30 | `let cfg = parse_config(` | Call |
| src/​lib.rs | 8 | `pub use config::parse_config` | Re-export |
| tests/​config_test.rs | 15 | `parse_config("test.toml")` | Test |
| tests/​config_test.rs | 25 | `parse_config("")` | Test |
| docs/​api.md | 42 | `parse_config` | Documentation |

### Potential Issues

⚠️ **Documentation reference:** docs/​api.md:42 may need manual update
⚠️ **Re-export:** src/​lib.rs:8 - public API change

### Proceed?
- [x] --dry-run (preview only)
- [ ] Apply changes

2. Extract Function

User: "Extract lines 20-35 in main.rs to a function"
    │
    ▼
[1] Read the selected code block
    │
    ▼
[2] Analyze variables
    - Which are inputs? (used but not defined in block)
    - Which are outputs? (defined and used after block)
    - Which are local? (defined and used only in block)
    │
    ▼
[3] Determine function signature
    │
    ▼
[4] Check for early returns, loops, etc.
    │
    ▼
[5] Generate extracted function
    │
    ▼
[6] Replace original code with call

Output:

## Extract Function: src/​main.rs:20-35

### Selected Code
​```rust
let file = File::open(&path)?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
let config: Config = toml::from_str(&contents)?;
validate_config(&config)?;
​```

### Analysis

**Inputs:** path: &Path
**Outputs:** config: Config
**Side Effects:** File I/​O, may return error

### Extracted Function

​```rust
fn load_and_validate_config(path: &Path) -> Result<Config> {
    let file = File::open(path)?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    let config: Config = toml::from_str(&contents)?;
    validate_config(&config)?;
    Ok(config)
}
​```

### Replacement

​```rust
let config = load_and_validate_config(&path)?;
​```

3. Move Symbol

User: "Move UserService to src/​services/"
    │
    ▼
[1] Find symbol and all its dependencies
    │
    ▼
[2] Find all references (callers)
    LSP(findReferences)
    │
    ▼
[3] Analyze import changes needed
    │
    ▼
[4] Check for circular dependencies
    │
    ▼
[5] Generate move plan

Output:

## Move: UserService → src/​services/​user.rs

### Current Location
src/​handlers/​auth.rs:50-120

### Dependencies (will be moved together)
- struct UserService (50-80)
- impl UserService (82-120)
- const DEFAULT_TIMEOUT (48)

### Import Changes Required

| File | Current | New |
|------|---------|-----|
| src/​main.rs | `use handlers::auth::UserService` | `use services::user::UserService` |
| src/​handlers/​api.rs | `use super::auth::UserService` | `use crate::services::user::UserService` |
| tests/​auth_test.rs | `use crate::handlers::auth::UserService` | `use crate::services::user::UserService` |

### New File Structure

​```
src/
├── services/
│   ├── mod.rs (NEW - add `pub mod user;`)
│   └── user.rs (NEW - UserService moved here)
├── handlers/
│   └── auth.rs (UserService removed)
​```

### Circular Dependency Check
✅ No circular dependencies detected

Safety Checks

CheckPurpose
Reference completenessEnsure all uses are found
Name conflictsDetect existing symbols with same name
Visibility changesWarn if pub/​private scope changes
Macro-generated codeWarn about code in macros
DocumentationFlag doc comments mentioning symbol
Test coverageShow affected tests

Dry Run Mode

Always use --dry-run first to preview changes:

/​rust-refactor-helper rename old_name new_name --dry-run

This shows all changes without applying them.

Related Skills

WhenSee
Navigate to symbolrust-code-navigator
Understand call flowrust-call-graph
Project structurerust-symbol-analyzer
Trait implementationsrust-trait-explorer

More Code Review & Quality skills

azure-enterprise-infra-planner logo
Code Review & Quality

azure-enterprise-infra-planner

Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.

1.5K 454.3K
View
caveman-review logo
Code Review & Quality

caveman-review

Ultra-compressed code review comments: location, problem, fix on one line each.

109.9K 388.8K
View
requesting-code-review logo
Code Review & Quality

requesting-code-review

Dispatch code review subagents with focused context to catch issues before they compound.

295.4K 245.8K
View
executing-plans logo
Code Review & Quality

executing-plans

Execute a written implementation plan with critical review and task checkpoints.

295.4K 229.1K
View
subagent-driven-development logo
Code Review & Quality

subagent-driven-development

Dispatch fresh subagents per task with two-stage review (spec compliance, then code quality) in the current session.

295.4K 221.7K
View
seo-audit logo
Code Review & Quality

seo-audit

Comprehensive SEO auditing framework covering crawlability, indexation, speed, on-page optimization, and content quality.

53.3K 220.8K
View
receiving-code-review logo
Code Review & Quality

receiving-code-review

Evaluate code review feedback with technical rigor before implementing, avoiding performative agreement and blind implementation.

295.4K 208.8K
View
gpt-image-2 logo
Code Review & Quality

gpt-image-2

Generate images via your ChatGPT subscription using text-to-image, image editing, and style transfer.

16 169.5K
View
mcp-builder logo
Code Review & Quality

mcp-builder

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

179.7K 122.7K
View
elevenlabs-music-generation logo
Code Review & Quality

elevenlabs-music-generation

Generate studio-quality songs and instrumentals from text descriptions, 5 seconds to 5 minutes, with section-level structure control.

52 116.9K
View
site-architecture logo
Code Review & Quality

site-architecture

Plan and optimize your website's page hierarchy, navigation, URL structure, and internal linking.

53.3K 112.8K
View
workers-best-practices logo
Code Review & Quality

workers-best-practices

Cloudflare Workers code review and authoring against production best practices.

3K 100.4K
View

Coding & apps AI tools

Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View
Imagica logo
Coding & apps

Imagica

Build a no-code AI app in minutes.

Freemium
View
E
Coding & apps

Emergent.sh

An IDE for code migration from legacy to modern frameworks through coding agents.

Freemium
View
Wonder Dynamics logo
Coding & apps

Wonder Dynamics

Automate CGI animation in live-action scenes

Paid
View
M
Coding & apps

Mixo

Launch a website in seconds with AI.

Paid
View
AI Code Convert logo
Coding & apps

AI Code Convert

Streamline Your Coding Experience with AI Code Helper

Free
View