Some background for bike-shedding... @eagerMove
would be a better name, but we also need to be able to talk about "eager-move" types. Our CoW types, Array, Set, and Dictionary, actually have eager-move semantics. In the future, there will be some way for programmers to annotate their own copy-on-write types, or value-like types in general, and those will be eager-moved. In the meantime, it can be forced with an @_eagerMove
attribute.
Of course, these types are still implicitly copied. So we need to be careful not to confuse the type and variable attributes. Are we ok saying that the same attribute does more when applied to values (adds in a restriction on copying)?
We get into trouble with names like "move-only" and "consumable" because this attribute is also useful for borrowed values which cannot in fact be moved or consumed.