1.6 KiB
1.6 KiB
Exemples / DO-DON'T — Chapitre 27 — Mémoire, références et unsafe
Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
Exemples extraits du chapitre
Exemple 1
value vs reference semantics
object allocation
moves/copies/clones
borrow/reference semantics si nécessaire
escape analysis
lifetimes internes
partial construction
partial destruction
cycles éventuels
resource ownership
thread-safety implications
Exemple 2
unsafe { ... }
unsafe func
unsafe method
unsafe clsmethod
unsafe construct
unsafe union
Exemple 3
unsafe variable
unsafe constant
unsafe field
Exemple 4
mot-clé mut pour obtenir la mutabilité normale
borrow checker visible dans la syntaxe
lifetimes utilisateur omniprésents
ownership annotations pour les usages ordinaires
DO / DON'T / WHY / compiler error / edge cases
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.
Pointeurs — distinctions à préserver
référence de classe
Slice<T>
pointeur Saselang
pointeur brut / FFI
function pointer
Les pointeurs explicites restent un sous-modèle mémoire dédié et ne remplacent pas les références/slices sûres dans le code ordinaire.
Exemple — backing storage stable
Vector<int32> values = ...;
Slice<int32> part = values::slice(0..<2);
values::reserve(1024); // une éventuelle relocalisation physique reste invisible
part[0]; // toujours valide