M
m03-mutability
CRITICAL: Use for mutability issues. Triggers: E0596, E0499, E0502, cannot borrow as mutable, already borrowed as immutable, mut, u0026mut, interior mutability, Cell, RefCell, Mutex, RwLock, 可变性, 内部可变性, 借用冲突
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
CRITICAL: Use for mutability issues. Triggers: E0596, E0499, E0502, cannot borrow as mutable, already borrowed as immutable, mut, u0026mut, interior mutability, Cell, RefCell, Mutex, RwLock, 可变性, 内部可变性, 借用冲突
How to use
- Uruchom skill, gdy napotkasz błąd mutability (E0596, E0499, E0502) lub komunikat o niemożności pożyczenia jako zmiennego. 2. Zamiast mechanicznie dodawać
mutlub&mut, odpowiedz na pytanie kluczowe: czy ta zmiana danych jest rzeczywiście potrzebna, czy to przypadkowa złożoność? 3. Określ, kto powinien kontrolować mutację — zewnętrzny kod (wtedy&mut T), logika wewnętrzna (interior mutability), czy dostęp współbieżny (Mutex, RwLock). 4. Sprawdź kontekst wątku: w single-threaded używaj Cell/RefCell, w multi-threaded — Mutex, RwLock lub Atomic. 5. Jeśli konflikty pożyczania się powtarzają, przejdź do m09-domain — być może struktura danych powinna być inaczej podzielona. 6. Jeśli RefCell pojawia się w kodzie asynchronicznym, sprawdź m07-concurrency — możliwe, że brakuje Send/Sync lub design locków jest błędny.