Enum rustc_mir::borrow_check::Overlap [−][src]
enum Overlap { Arbitrary, EqualOrDisjoint, Disjoint, }
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
The degree of overlap between 2 places for borrow-checking.
Variants
Arbitrary
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
The places might partially overlap - in this case, we give
up and say that they might conflict. This occurs when
different fields of a union are borrowed. For example,
if u
is a union, we have no way of telling how disjoint
u.a.x
and a.b.y
are.
EqualOrDisjoint
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
The places have the same type, and are either completely disjoint or equal - i.e. they can't "partially" overlap as can occur with unions. This is the "base case" on which we recur for extensions of the place.
Disjoint
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
The places are disjoint, so we know all extensions of them will also be disjoint.