Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
zhanghandong avatar

M02 Resource

  • 795 installs
  • 1.3k repo stars
  • Updated May 24, 2026
  • zhanghandong/rust-skills

This is a copy of m02-resource by actionbook - installs and ranking accrue to the original listing.

m02-resource is a Rust agent skill that guides smart-pointer and resource-management decisions for developers who need to choose Box, Rc, Arc, RefCell, or Cell before writing heap-allocated or shared-state code.

About

m02-resource is a Rust language-mechanics skill from zhanghandong/rust-skills that helps developers choose the right ownership pattern before writing code that manages heap memory or shared state. It maps common compiler errors to design questions about single versus shared ownership, single-threaded versus multi-threaded access, and reference-cycle risk. The skill triggers on Box, Rc, Arc, Weak, RefCell, Cell, RAII, Drop, and common comparison questions such as Box versus Rc or Arc versus Rc. Developers reach for m02-resource when Rust borrow-checker errors or ownership ambiguity block progress on backend services, CLI tools, or concurrent Rust code.

  • Decision table mapping common errors to root design questions instead of quick fixes
  • 3-step thinking prompt covering ownership model, thread context, and cycle detection
  • Trace-up workflow that escalates pointer questions to higher-level architecture
  • Explicit guidance on Box vs Rc vs Arc vs Weak, RefCell, Cell, and Drop patterns
  • Bilingual triggers supporting both English and Chinese queries

M02 Resource by the numbers

  • 795 all-time installs (skills.sh)
  • +7 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 m02-resource

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs795
repo stars1.3k
Security audit3 / 3 scanners passed
Last updatedMay 24, 2026
Repositoryzhanghandong/rust-skills

When should Rust code use Arc versus Rc?

Get systematic guidance on choosing and using Rust smart pointers before writing code that manages heap memory or shared state.

Who is it for?

Rust developers implementing heap allocation, reference counting, interior mutability, or shared state who need systematic pointer-selection guidance.

Skip if: Developers who need async runtime setup, Cargo workspace configuration, or non-Rust memory-management guidance.

When should I use this skill?

A developer asks which Rust smart pointer to use, hits borrow-checker errors around Rc/Arc/RefCell, or mentions heap allocation and shared ownership.

What you get

Selected smart-pointer pattern with ownership, threading, and cycle-risk rationale

  • Smart-pointer recommendation
  • Ownership-pattern rationale

Files

SKILL.mdMarkdownGitHub ↗

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

ErrorDon't Just SayAsk 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)
SituationTrace ToQuestion
Rc vs Arc confusionm07-concurrencyWhat's the concurrency model?
RefCell panicsm03-mutabilityIs interior mutability right here?
Memory leaksm12-lifecycleWhere 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

TypeOwnershipThread-SafeUse When
Box<T>SingleYesHeap allocation, recursive types
Rc<T>SharedNoSingle-thread shared ownership
Arc<T>SharedYesMulti-thread shared ownership
Weak<T>Weak refSame as Rc/ArcBreak reference cycles
Cell<T>SingleNoInterior mutability (Copy types)
RefCell<T>SingleNoInterior 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

ProblemCauseFix
Rc cycle leakMutual strong refsUse Weak for one direction
RefCell panicBorrow conflict at runtimeUse try_borrow or restructure
Arc overheadAtomic ops in hot pathConsider Rc if single-threaded
Box unnecessaryData fits on stackRemove Box

---

Anti-Patterns

Anti-PatternWhy BadBetter
Arc everywhereUnnecessary atomic overheadUse Rc for single-thread
RefCell everywhereRuntime panicsDesign clear ownership
Box for small typesUnnecessary allocationStack allocation
Ignore Weak for cyclesMemory leaksDesign parent-child with Weak

---

Related Skills

WhenSee
Ownership errorsm01-ownership
Interior mutability detailsm03-mutability
Multi-thread contextm07-concurrency
Resource lifecyclem12-lifecycle

Related skills

How it compares

Choose m02-resource over general Rust debugging skills when the core decision is which smart pointer and ownership pattern to adopt, not how to fix an unrelated compile error.

FAQ

Which Rust smart pointers does m02-resource cover?

m02-resource covers Box, Rc, Arc, Weak, RefCell, and Cell. It helps developers decide among them based on single versus shared ownership, threading model, and whether reference cycles are possible.

When should developers invoke m02-resource?

m02-resource should be invoked before writing Rust code that allocates on the heap or shares state across scopes. Common triggers include Box versus Rc questions, Arc versus Rc decisions, and RefCell borrow-checker failures.

Is M02 Resource safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Rustbackend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.