rustc_mir_dataflow::move_paths

Module abs_domain

Source
Expand description

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: a[x] needs to be treated as mapping to the same move path as a[y] as well as a[13], etc. So we map these x/y values to ().

(In theory, the analysis could be extended to work with sets of paths, so that a[0] and a[13] could be kept distinct, while a[x] would still overlap them both. But that is not this representation does today.)

Traitsยง