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

M03 Mutability

  • 1.5k installs
  • 1.3k repo stars
  • Updated May 24, 2026
  • actionbook/rust-skills

m03-mutability is an agent skill for resolve rust borrow checker mutability errors with cell, refcell, mutex, and interior mutability.

About

The m03-mutability skill is designed for resolve Rust borrow checker mutability errors with Cell, RefCell, Mutex, and interior mutability. Mutability > Layer 1: Language Mechanics Core Question Why does this data need to change, and who can change it? Before adding interior mutability, understand: Is mutation essential or accidental complexity? Invoke when the user hits cannot borrow as mutable, already borrowed, or interior mutability questions.

  • Is mutation essential or accidental complexity?.
  • Who should control mutation?.
  • Is the mutation pattern safe?.

M03 Mutability by the numbers

  • 1,458 all-time installs (skills.sh)
  • +52 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #10 of 129 Rust skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

m03-mutability capabilities & compatibility

Capabilities
is mutation essential or accidental complexity? · who should control mutation? · is the mutation pattern safe?
From the docs

What m03-mutability says it does

CRITICAL: Use for mutability issues. Triggers: E0596, E0499, E0502, cannot borrow as mutable, already borrowed as immutable, mut, &mut, interior mutability, Cell, RefCell, Mutex, R
SKILL.md
CRITICAL: Use for mutability issues. Triggers: E0596, E0499, E0502, cannot borrow as mutable, already borrowed as immutable, mut, &mut, interior mutability, Cel
SKILL.md
npx skills add https://github.com/actionbook/rust-skills --skill m03-mutability

Add your badge

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

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

How do I resolve rust borrow checker mutability errors with cell, refcell, mutex, and interior mutability?

Resolve Rust borrow checker mutability errors with Cell, RefCell, Mutex, and interior mutability.

Who is it for?

Rust developers fixing E0596, E0499, E0502 and interior mutability patterns.

Skip if: Skip for non-Rust languages or high-level architecture without borrow errors.

When should I use this skill?

User hits cannot borrow as mutable, already borrowed, or interior mutability questions.

What you get

Completed m03-mutability workflow with documented commands, files, and expected deliverables.

  • Mutability design decision
  • Corrected borrow-safe code

Files

SKILL.mdMarkdownGitHub ↗

Mutability

Layer 1: Language Mechanics

Core Question

Why does this data need to change, and who can change it?

Before adding interior mutability, understand:

  • Is mutation essential or accidental complexity?
  • Who should control mutation?
  • Is the mutation pattern safe?

---

Error → Design Question

ErrorDon't Just SayAsk Instead
E0596"Add mut"Should this really be mutable?
E0499"Split borrows"Is the data structure right?
E0502"Separate scopes"Why do we need both borrows?
RefCell panic"Use try_borrow"Is runtime check appropriate?

---

Thinking Prompt

Before adding mutability:

1. Is mutation necessary?

  • Maybe transform → return new value
  • Maybe builder → construct immutably

2. Who controls mutation?

  • External caller → &mut T
  • Internal logic → interior mutability
  • Concurrent access → synchronized mutability

3. What's the thread context?

  • Single-thread → Cell/RefCell
  • Multi-thread → Mutex/RwLock/Atomic

---

Trace Up ↑

When mutability conflicts persist:

E0499/E0502 (borrow conflicts)
    ↑ Ask: Is the data structure designed correctly?
    ↑ Check: m09-domain (should data be split?)
    ↑ Check: m07-concurrency (is async involved?)
Persistent ErrorTrace ToQuestion
Repeated borrow conflictsm09-domainShould data be restructured?
RefCell in asyncm07-concurrencyIs Send/Sync needed?
Mutex deadlocksm07-concurrencyIs the lock design right?

---

Trace Down ↓

From design to implementation:

"Need mutable access from &self"
    ↓ T: Copy → Cell<T>
    ↓ T: !Copy → RefCell<T>

"Need thread-safe mutation"
    ↓ Simple counters → AtomicXxx
    ↓ Complex data → Mutex<T> or RwLock<T>

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

---

Borrow Rules

At any time, you can have EITHER:
├─ Multiple &T (immutable borrows)
└─ OR one &mut T (mutable borrow)

Never both simultaneously.

Quick Reference

PatternThread-SafeRuntime CostUse When
&mut TN/AZeroExclusive mutable access
Cell<T>NoZeroCopy types, no refs needed
RefCell<T>NoRuntime checkNon-Copy, need runtime borrow
Mutex<T>YesLock contentionThread-safe mutation
RwLock<T>YesLock contentionMany readers, few writers
Atomic*YesMinimalSimple types (bool, usize)

Error Code Reference

ErrorCauseQuick Fix
E0596Borrowing immutable as mutableAdd mut or redesign
E0499Multiple mutable borrowsRestructure code flow
E0502&mut while & existsSeparate borrow scopes

---

Interior Mutability Decision

ScenarioChoose
T: Copy, single-threadCell<T>
T: !Copy, single-threadRefCell<T>
T: Copy, multi-threadAtomicXxx
T: !Copy, multi-threadMutex<T> or RwLock<T>
Read-heavy, multi-threadRwLock<T>
Simple flags/countersAtomicBool, AtomicUsize

---

Anti-Patterns

Anti-PatternWhy BadBetter
RefCell everywhereRuntime panicsClear ownership design
Mutex for single-threadUnnecessary overheadRefCell
Ignore RefCell panicHard to debugHandle or restructure
Lock inside hot loopPerformance killerBatch operations

---

Related Skills

WhenSee
Smart pointer choicem02-resource
Thread safetym07-concurrency
Data structure designm09-domain
Anti-patternsm15-anti-pattern

Related skills

Forks & variants (1)

M03 Mutability has 1 known copy in the catalog totaling 784 installs. They canonicalize to this original listing.

How it compares

Use m03-mutability for borrow and interior mutability errors rather than trait bound or generic polymorphism skills in the Rust actionbook series.

FAQ

What does m03-mutability do?

Resolve Rust borrow checker mutability errors with Cell, RefCell, Mutex, and interior mutability.

When should I use m03-mutability?

User hits cannot borrow as mutable, already borrowed, or interior mutability questions.

Is m03-mutability safe to install?

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.