M02 resource
๐ฑ๐ญ No we are not computer use, it's Application Use Via... a unified orchestration layer of OS automation, 0 token cost
npx -y skills add moeru-ai/auv --skill m02-resourceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 20 stars20 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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, ๆบ่ฝๆ้, ๅผ็จ่ฎกๆฐ, ๅ ๅ้
SKILL.md
4.3 KB, as published. Nobody here has run it
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:
-
What's the ownership model?
- Single owner โ Box or owned value
- Shared ownership โ Rc/Arc
- Weak reference โ Weak
-
What's the thread context?
- Single-thread โ Rc, Cell, RefCell
- Multi-thread โ Arc, Mutex, RwLock
-
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 |