What problem does it solve? Rust's borrow checker rejects code with cryptic errors like E0382, E0499, or E0597, and developers often reach for .clone() as a reflex instead of understanding the underlying ownership rule being violated. This Skill provides the mental model behind ownership, borrowing, and lifetimes, plus concrete fixes for each compiler error. ## Core Features & Use Cases - Error-to-fix mapping: A lookup table maps common borrow-checker errors (E0382, E0499, E0502, E0505, E0507, E0515, E0597, E0106) to their meaning and the first fix to try. - Signature and pointer decision guides: Decision tables for choosing T vs &T vs &mut T in function signatures, and for picking Box, Rc, RefCell, Cow, or Weak for sharing and mutation. - Resource lifecycle patterns: Covers RAII guards, scope guards with transaction rollback, and lazy initialization with OnceLock/LazyLock, including the let _ = guard-drop footgun. - Use Case: When the compiler rejects code with "cannot borrow as mutable more than once" (E0499), consult the guide to learn about non-lexical lifetimes, disjoint field borrows, and split_at_mut instead of cloning. ## Quick Start Ask the assistant to explain why your Rust code fails with a borrow-checker error and how to fix it without cloning.