Since adding indirection is rather slow anyways, it hasn’t been of much important to optimize this. Doing mutable struct A should have much better performance that defining struct A and declaring some of the fields to be pointers, even if those pointers are concretely typed (with ScalarWrapper or RefValue or the like)
Ok, but there are reasons other than performance to make fields non-mutable. It might just be semantically correct, and having to disable immutability on all fields is unfortunate.