The move-analysis portion of borrowck needs to work in an abstract
domain of lifted
Places. Most of the
Place variants fall into a
one-to-one mapping between the concrete and abstract (e.g., a
field-deref on a local variable,
x.field, has the same meaning
in both domains). Indexed projections are the exception:
needs to be treated as mapping to the same move path as
Init represents a point in a program that initializes some L-value;
MoveOut represents a point in a program that moves out of some
L-value; i.e., “creates” uninitialized memory.
MovePath is a canonicalized representation of a path that is
moved or assigned to.
Tables mapping from a place to its MovePathIndex.
Additional information about the initialization.
Initializations can be from an argument or from a statement. Arguments
do not have locations, in those cases the
Local is kept..