Struct rustc_trait_selection::infer::region_constraints::VerifyIfEq
source · [−]Expand description
This is a “conditional bound” that checks the result of inference and supplies a bound if it ended up being relevant. It’s used in situations like this:
fn foo<'a, 'b, T: SomeTrait<'a>>
where
<T as SomeTrait<'a>>::Item: 'bIf we have an obligation like <T as SomeTrait<'?x>>::Item: 'c, then
we don’t know yet whether it suffices to show that 'b: 'c. If '?x winds
up being equal to 'a, then the where-clauses on function applies, and
in that case we can show 'b: 'c. But if '?x winds up being something
else, the bound isn’t relevant.
In the VerifyBound, this struct is enclosed in `Binder to account
for cases like
where for<'a> <T as SomeTrait<'a>::Item: 'aThe idea is that we have to find some instantiation of 'a that can
make <T as SomeTrait<'a>>::Item equal to the final value of G,
the generic we are checking.
fn(min) -> bool {
exists<'a> {
if G == K {
B(min)
} else {
false
}
}
}Fields
ty: Ty<'tcx>Type which must match the generic G
bound: Region<'tcx>Bound that applies if ty is equal.
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for VerifyIfEq<'tcx>
impl<'tcx> Send for VerifyIfEq<'tcx>
impl<'tcx> Sync for VerifyIfEq<'tcx>
impl<'tcx> Unpin for VerifyIfEq<'tcx>
impl<'tcx> !UnwindSafe for VerifyIfEq<'tcx>
Blanket Implementations
sourceimpl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T where
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T where
T: Copy,
fn allocate_on(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter(
arena: &'a Arena<'tcx>,
iter: impl IntoIterator<Item = T>
) -> &'a mut [T]ⓘNotable traits for &[u8]impl Read for &[u8]impl Write for &mut [u8]
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<'tcx, T> IsSuggestable<'tcx> for T where
T: TypeVisitable<'tcx>,
impl<'tcx, T> IsSuggestable<'tcx> for T where
T: TypeVisitable<'tcx>,
sourcefn is_suggestable(self, tcx: TyCtxt<'tcx>) -> bool
fn is_suggestable(self, tcx: TyCtxt<'tcx>) -> bool
Whether this makes sense to suggest in a diagnostic. Read more
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: 16 bytes