Here is the use-case:
- linearly mutate a vector
- freeze it so some functions can duplicate it and read it
- when that terminates unfreeze it and continue linear operations
Is there a natural way of doing this? In particular it seems difficult to ensure functions using the duplicated frozen vector terminate before proceeding