Mutability and aliasing ======================= Require `var` on both local variable/parameter, and on any fields, in order to allow modification. Disallow modification once local variable (or parameter) declared `var` is either: * Stored in a field that is neither `var` nor `aliased`. * Passed to a `keep` parameter * Passed to a self-`keep` method This should be sufficient for preventing fields that are neither `var` nor `aliased` from being aliased (and thus preventing them from being changed behind ones back). Keywords to use? ---------------- Mutability: `var` `mut` `modifiable` Aliasing: `aliased` `link` `linked` `live` `nonfrozen` `othervar` `ref` `view` Keep: `keep` Embedding (preventing pointer indirection): `embed`