๐ŸŽฏ

m02-resource

๐ŸŽฏSkill

from goooice/rust-skills

VibeIndex|
What it does

Guides developers through smart pointer selection by analyzing ownership, thread context, and design constraints for optimal Rust resource management.

๐Ÿ“ฆ

Part of

goooice/rust-skills(35 items)

m02-resource

Installation

Add MarketplaceAdd marketplace to Claude Code
/plugin marketplace add ZhangHanDong/rust-skills
Install PluginInstall plugin from marketplace
/plugin install rust-skills@rust-skills
Quick InstallInstall with npx
npx skills add ZhangHanDong/rust-skills
git cloneClone repository
git clone https://github.com/ZhangHanDong/rust-skills.git
๐Ÿ“– Extracted from docs: goooice/rust-skills
4Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

"CRITICAL: Use for smart pointers and resource management. Triggers: Box, Rc, Arc, Weak, RefCell, Cell, smart pointer, heap allocation, reference counting, RAII, Drop, should I use Box or Rc, when to use Arc vs Rc, ๆ™บ่ƒฝๆŒ‡้’ˆ, ๅผ•็”จ่ฎกๆ•ฐ, ๅ †ๅˆ†้…"

Overview

# Resource Management

> Layer 1: Language Mechanics

Core Question

What ownership pattern does this resource need?

Before choosing a smart pointer, understand:

  • Is ownership single or shared?
  • Is access single-threaded or multi-threaded?
  • Are there potential cycles?

---

Error โ†’ Design Question

| Error | Don't Just Say | Ask Instead |

|-------|----------------|-------------|

| "Need heap allocation" | "Use Box" | Why can't this be on stack? |

| Rc memory leak | "Use Weak" | Is the cycle necessary in design? |

| RefCell panic | "Use try_borrow" | Is runtime check the right approach? |

| Arc overhead complaint | "Accept it" | Is multi-thread access actually needed? |

---

Thinking Prompt

Before choosing a smart pointer:

  1. What's the ownership model?

- Single owner โ†’ Box or owned value

- Shared ownership โ†’ Rc/Arc

- Weak reference โ†’ Weak

  1. What's the thread context?

- Single-thread โ†’ Rc, Cell, RefCell

- Multi-thread โ†’ Arc, Mutex, RwLock

  1. Are there cycles?

- Yes โ†’ One direction must be Weak

- No โ†’ Regular Rc/Arc is fine

---

Trace Up โ†‘

When pointer choice is unclear, trace to design:

```

"Should I use Arc or Rc?"

โ†‘ Ask: Is this data shared across threads?

โ†‘ Check: m07-concurrency (thread model)

โ†‘ Check: domain-* (performance constraints)

```

| Situation | Trace To | Question |

|-----------|----------|----------|

| Rc vs Arc confusion | m07-concurrency | What's the concurrency model? |

| RefCell panics | m03-mutability | Is interior mutability right here? |

| Memory leaks | m12-lifecycle | Where should cleanup happen? |

---

Trace Down โ†“

From design to implementation:

```

"Need single-owner heap data"

โ†“ Use: Box

"Need shared immutable data (single-thread)"

โ†“ Use: Rc

"Need shared immutable data (multi-thread)"

โ†“ Use: Arc

"Need to break reference cycle"

โ†“ Use: Weak

"Need shared mutable data"

โ†“ Single-thread: Rc>

โ†“ Multi-thread: Arc> or Arc>

```

---

Quick Reference

| Type | Ownership | Thread-Safe | Use When |

|------|-----------|-------------|----------|

| Box | Single | Yes | Heap allocation, recursive types |

| Rc | Shared | No | Single-thread shared ownership |

| Arc | Shared | Yes | Multi-thread shared ownership |

| Weak | Weak ref | Same as Rc/Arc | Break reference cycles |

| Cell | Single | No | Interior mutability (Copy types) |

| RefCell | Single | No | Interior mutability (runtime check) |

Decision Flowchart

```

Need heap allocation?

โ”œโ”€ Yes โ†’ Single owner?

โ”‚ โ”œโ”€ Yes โ†’ Box

โ”‚ โ””โ”€ No โ†’ Multi-thread?

โ”‚ โ”œโ”€ Yes โ†’ Arc

โ”‚ โ””โ”€ No โ†’ Rc

โ””โ”€ No โ†’ Stack allocation (default)

Have reference cycles?

โ”œโ”€ Yes โ†’ Use Weak for one direction

โ””โ”€ No โ†’ Regular Rc/Arc

Need interior mutability?

โ”œโ”€ Yes โ†’ Thread-safe needed?

โ”‚ โ”œโ”€ Yes โ†’ Mutex or RwLock

โ”‚ โ””โ”€ No โ†’ T: Copy? โ†’ Cell : RefCell

โ””โ”€ No โ†’ Use &mut T

```

---

Common Errors

| Problem | Cause | Fix |

|---------|-------|-----|

| Rc cycle leak | Mutual strong refs | Use Weak for one direction |

| RefCell panic | Borrow conflict at runtime | Use try_borrow or restructure |

| Arc overhead | Atomic ops in hot path | Consider Rc if single-threaded |

| Box unnecessary | Data fits on stack | Remove Box |

---

Anti-Patterns

| Anti-Pattern | Why Bad | Better |

|--------------|---------|--------|

| Arc everywhere | Unnecessary atomic overhead | Use Rc for single-thread |

| RefCell everywhere | Runtime panics | Design clear ownership |

| Box for small types | Unnecessary allocation | Stack allocation |

| Ignore Weak for cycles | Memory leaks | Design parent-child with Weak |

---

Related Skills

| When | See |

|------|-----|

| Ownership errors | m01-ownership |

| Interior mutability details | m03-mutability |

| Multi-thread context | m07-concurrency |

| Resource lifecycle | m12-lifecycle |

More from this repository10

๐ŸŽฏ
m10-performance๐ŸŽฏSkill

Optimizes code performance by identifying bottlenecks, measuring impact, and guiding strategic improvements across algorithm, data structure, and memory efficiency.

๐ŸŽฏ
m14-mental-model๐ŸŽฏSkill

Applies the M14 mental model framework to enhance decision-making and strategic thinking through structured cognitive analysis.

๐ŸŽฏ
m04-zero-cost๐ŸŽฏSkill

Guides developers in choosing zero-cost abstractions by analyzing type system constraints and performance trade-offs in Rust generics and traits.

๐ŸŽฏ
meta-cognition-parallel๐ŸŽฏSkill

Performs parallel three-layer meta-cognitive analysis by forking subagents to simultaneously analyze language mechanics, design choices, and domain constraints, then synthesizing results.

๐ŸŽฏ
unsafe-checker๐ŸŽฏSkill

Identifies and reviews unsafe Rust code patterns, FFI risks, and potential memory unsafety in Rust projects.

๐ŸŽฏ
rust-skill-creator๐ŸŽฏSkill

Dynamically generates Claude skills for Rust crates, standard library modules, and documentation by extracting and processing technical details from specified URLs.

๐ŸŽฏ
coding-guidelines๐ŸŽฏSkill

Provides comprehensive Rust coding guidelines covering naming conventions, best practices, error handling, memory management, concurrency, and code style recommendations.

๐ŸŽฏ
rust-refactor-helper๐ŸŽฏSkill

Performs safe Rust refactoring by analyzing symbol references, checking conflicts, and applying changes across project files using LSP.

๐ŸŽฏ
m03-mutability๐ŸŽฏSkill

Diagnoses and guides resolution of Rust mutability and borrowing conflicts by analyzing ownership, mutation patterns, and thread-safety requirements.

๐ŸŽฏ
m05-type-driven๐ŸŽฏSkill

Explores and demonstrates type-driven development techniques in Rust, showcasing advanced type system features and pattern matching strategies.