Enum rustc_borrowck::Overlap
source · pub(crate) enum Overlap {
Arbitrary,
EqualOrDisjoint,
Disjoint,
}
Expand description
The degree of overlap between 2 places for borrow-checking.
Variants§
Arbitrary
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
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
The places are disjoint, so we know all extensions of them will also be disjoint.
Auto Trait Implementations§
impl RefUnwindSafe for Overlap
impl Send for Overlap
impl Sync for Overlap
impl Unpin for Overlap
impl UnwindSafe for Overlap
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 1 byte
Size for each variant:
Arbitrary
: 0 bytesEqualOrDisjoint
: 0 bytesDisjoint
: 0 bytes