m02-resource

zhanghandong/rust-skills · updated Apr 8, 2026

$npx skills add https://github.com/zhanghandong/rust-skills --skill m02-resource
0 commentsdiscussion
summary

Smart pointer and resource ownership patterns for Rust heap allocation and reference counting.

  • Guides ownership decisions through a three-step model: single vs. shared ownership, single-threaded vs. multi-threaded context, and presence of reference cycles
  • Covers six core types (Box, Rc, Arc, Weak, Cell, RefCell) with a decision flowchart and quick reference table for choosing the right pattern
  • Includes common errors and anti-patterns with fixes, such as using Weak to break cycles, av
skill.md

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
  2. What's the thread context?

    • Single-thread → Rc, Cell, RefCell
    • Multi-thread → Arc, Mutex, RwLock
  3. 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<T>

"Need shared immutable data (single-thread)"
    ↓ Use: Rc<T>

"Need shared immutable data (multi-thread)"
    ↓ Use: Arc<T>

"Need to break reference cycle"
    ↓ Use: Weak<T>

"Need shared mutable data"
    ↓ Single-thread: Rc<RefCell<T>>
    ↓ Multi-thread: Arc<Mutex<T>> or Arc<RwLock<T>>

Quick Reference

Type Ownership Thread-Safe Use When
Box<T> Single Yes Heap allocation, recursive types
Rc<T> Shared No Single-thread shared ownership
Arc<T> Shared Yes Multi-thread shared ownership
Weak<T> Weak ref Same as Rc/Arc Break reference cycles
Cell<T> Single No Interior mutability (Copy types)
RefCell<T> Single No Interior mutability (runtime check)

Decision Flowchart

Need heap allocation?
├─ Yes → Single owner?
│        ├─ Yes → Box<T>
│        └─ No → Multi-thread?
│                ├─ Yes → Arc<T>
│                └─ No → Rc<T>
└─ 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<T> or RwLock<T>
│        └─ No → T: Copy? → Cell<T> : RefCell<T>
└─ 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

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.668 reviews
  • Kabir Yang· Dec 24, 2024

    Keeps context tight: m02-resource is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Lucas Okafor· Dec 24, 2024

    I recommend m02-resource for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Alexander Bansal· Dec 20, 2024

    Solid pick for teams standardizing on skills: m02-resource is focused, and the summary matches what you get after install.

  • Anaya Yang· Dec 16, 2024

    m02-resource has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Isabella Jackson· Dec 12, 2024

    m02-resource reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Jin Wang· Dec 12, 2024

    m02-resource has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Nikhil Nasser· Nov 15, 2024

    Registry listing for m02-resource matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Anaya Martinez· Nov 11, 2024

    We added m02-resource from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Alexander Sanchez· Nov 7, 2024

    m02-resource fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Amina Jain· Nov 3, 2024

    m02-resource is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

showing 1-10 of 68

1 / 7