Module rustc_borrowck::source ·
A public API provided for the Rust compiler consumers. This file provides API for compiler consumers.
Bodywith information computed by the borrow checker. This struct is intended to be consumed by compiler consumers.
Borrowsstores the data used in the analyses that track the flow of borrows.
- Maps between a MIR Location, which identifies a particular statement within a basic block, to a “rich location”, which identifies at a finer granularity. In particular, we distinguish the start of a statement and the mid-point. The mid-point is the point just before the statement takes effect; in particular, for an assignment
A = B, it is the point where B is about to be written into A. This mid-point is a kind of hack to work around our inability to track the position information at sufficient granularity through outlives relations; however, the rich location table serves another purpose: it compresses locations from multiple words into a single u32.
- Options determining the output behavior of
- When checking if a place conflicts with another place, this enum is used to influence decisions where a place might be equal or disjoint with another place, such as if
a[i] == a[j].
PlaceConflictBias::Overlapwould bias toward assuming that
jand that these places overlap.
PlaceConflictBias::NoOverlapassumes that for the purposes of the predicate being run in the calling context, the conservative choice is to assume the compared indices are disjoint (and therefore, do not overlap).
- Extension methods for the
- This function computes borrowck facts for the given body. The
ConsumerOptionsdetermine which facts are returned. This function makes a copy of the body because it needs to regenerate the region identifiers. It should never be invoked during a typical compilation session due to the unnecessary overhead of returning
- Helper function for checking if places conflict with a mutable borrow and deep access depth. This is used to check for places conflicting outside of the borrow checking code (such as in dataflow).