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

M14 Mental Model

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

This is a copy of m14-mental-model by actionbook - installs and ranking accrue to the original listing.

m14-mental-model is an agent skill that reframes Java-style reference thinking into Rust ownership, borrowing, and lifetime mental models before writing or reviewing code.

About

m14-mental-model is Layer 2 of the zhanghandong rust-skills collection, focused on how to think about Rust concepts rather than syntax alone. The skill maps eight core models—ownership as a unique key, move as key handover, &T as read-only lending, &mut T as exclusive editing, lifetimes as valid scope tickets, Box as heap remote control, Rc as shared ownership, and Arc as thread-safe Rc—with stack-and-heap ASCII diagrams. It contrasts shifts from Java, C#, C++, Python, Go, and JavaScript, listing five common compiler errors (E0382, E0502, E0499, E0106, E0507) with wrong versus correct mental models. A thinking prompt asks who owns data, what guarantee Rust enforces, and what the compiler error means, with trace-up links to m01–m07 skills. Reach for m14-mental-model when developers coming from GC languages hit borrow-checker confusion before diving into implementation skills like m01-ownership.

  • Three core models: ownership as single-owner cleanup, borrowing as temporary access, lifetimes as validity scopes
  • Concrete snippets for String ownership, &String borrows, and explicit 'a lifetime on longest
  • Contrasts Rust with Java/C# everything-is-a-reference habits to reduce fight-the-borrow-checker loops
  • Structured as repeatable perspective shifts for debugging and API design

M14 Mental Model by the numbers

  • 764 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 m14-mental-model

Add your badge

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

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

How do you understand Rust ownership and borrowing?

Reframe Java-style reference thinking into Rust ownership, borrowing, and lifetimes before writing or reviewing Rust code.

Who is it for?

Developers migrating from Java, Python, or Go who need intuition for Rust ownership before implementing services or reviewing borrow-checker errors.

Skip if: Advanced Rust engineers who already internalize ownership patterns and only need domain-specific unsafe or async guidance.

When should I use this skill?

The user is confused about Rust ownership, borrow checker errors, lifetimes, or asks to explain Rust concepts coming from another language.

What you get

Correct mental models for ownership moves, borrows, lifetimes, and smart pointers plus mapped fixes for common borrow-checker errors.

By the numbers

  • Documents 8 core mental models in the Key Mental Models table
  • Maps 5 common compiler errors to misconception corrections
  • Includes 5 language migration rows in Coming From Other Languages

Files

SKILL.mdMarkdownGitHub ↗

Mental Models

Layer 2: Design Choices

Core Question

What's the right way to think about this Rust concept?

When learning or explaining Rust:

  • What's the correct mental model?
  • What misconceptions should be avoided?
  • What analogies help understanding?

---

Key Mental Models

ConceptMental ModelAnalogy
OwnershipUnique keyOnly one person has the house key
MoveKey handoverGiving away your key
&TLending for readingLending a book
&mut TExclusive editingOnly you can edit the doc
Lifetime 'aValid scope"Ticket valid until..."
Box<T>Heap pointerRemote control to TV
Rc<T>Shared ownershipMultiple remotes, last turns off
Arc<T>Thread-safe RcRemotes from any room

---

Coming From Other Languages

FromKey Shift
Java/C#Values are owned, not references by default
C/C++Compiler enforces safety rules
Python/GoNo GC, deterministic destruction
FunctionalMutability is safe via ownership
JavaScriptNo null, use Option instead

---

Thinking Prompt

When confused about Rust:

1. What's the ownership model?

  • Who owns this data?
  • How long does it live?
  • Who can access it?

2. What guarantee is Rust providing?

  • No data races
  • No dangling pointers
  • No use-after-free

3. What's the compiler telling me?

  • Error = violation of safety rule
  • Solution = work with the rules

---

Trace Up ↑

To design understanding (Layer 2):

"Why can't I do X in Rust?"
    ↑ Ask: What safety guarantee would be violated?
    ↑ Check: m01-m07 for the rule being enforced
    ↑ Ask: What's the intended design pattern?

---

Trace Down ↓

To implementation (Layer 1):

"I understand the concept, now how do I implement?"
    ↓ m01-ownership: Ownership patterns
    ↓ m02-resource: Smart pointer choice
    ↓ m07-concurrency: Thread safety

---

Common Misconceptions

ErrorWrong ModelCorrect Model
E0382 use after moveGC cleans upOwnership = unique key transfer
E0502 borrow conflictMultiple writers OKOnly one writer at a time
E0499 multiple mut borrowsAliased mutationExclusive access for mutation
E0106 missing lifetimeIgnoring scopeReferences have validity scope
E0507 cannot move from &TImplicit cloneReferences don't own data

Deprecated Thinking

DeprecatedBetter
"Rust is like C++"Different ownership model
"Lifetimes are GC"Compile-time validity scope
"Clone solves everything"Restructure ownership
"Fight the borrow checker"Work with the compiler
"unsafe to avoid rules"Understand safe patterns first

---

Ownership Visualization

Stack                          Heap
+----------------+            +----------------+
| main()         |            |                |
|   s1 ─────────────────────> │ "hello"        |
|                |            |                |
| fn takes(s) {  |            |                |
|   s2 (moved) ─────────────> │ "hello"        |
| }              |            | (s1 invalid)   |
+----------------+            +----------------+

After move: s1 is no longer valid

Reference Visualization

+----------------+
| data: String   |────────────> "hello"
+----------------+
       ↑
       │ &data (immutable borrow)
       │
+------+------+
| reader1    reader2    (multiple OK)
+------+------+

+----------------+
| data: String   |────────────> "hello"
+----------------+
       ↑
       │ &mut data (mutable borrow)
       │
+------+
| writer (only one)
+------+

---

Learning Path

StageFocusSkills
BeginnerOwnership basicsm01-ownership, m14-mental-model
IntermediateSmart pointers, error handlingm02, m06
AdvancedConcurrency, unsafem07, unsafe-checker
ExpertDesign patternsm09-m15, domain-*

---

Related Skills

WhenSee
Ownership errorsm01-ownership
Smart pointersm02-resource
Concurrencym07-concurrency
Anti-patternsm15-anti-pattern

Related skills

How it compares

Pick m14-mental-model for conceptual reframing; invoke m01-ownership when you need concrete Rust ownership implementation patterns.

FAQ

What mental models does m14-mental-model teach?

m14-mental-model teaches eight models—ownership as unique key, move as handover, &T and &mut T as lending, lifetimes as scope tickets, and Box, Rc, Arc as heap and shared ownership patterns—with language migration tables.

Which Rust compiler errors does m14-mental-model address?

m14-mental-model maps five frequent errors—E0382 use after move, E0502 borrow conflict, E0499 multiple mut borrows, E0106 missing lifetime, E0507 move from &T—to misconception tables with corrected thinking.

What rust-skills layer is m14-mental-model?

m14-mental-model is Layer 2 Design Choices in zhanghandong/rust-skills, bridging conceptual understanding before Layer 1 implementation skills like m01-ownership and m02-resource.

Is M14 Mental Model 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.