Struct rustc_trait_selection::infer::nll_relate::TypeRelating
source · [−]pub struct TypeRelating<'me, 'tcx, D> where
D: TypeRelatingDelegate<'tcx>, {
infcx: &'me InferCtxt<'me, 'tcx>,
delegate: D,
ambient_variance: Variance,
ambient_variance_info: VarianceDiagInfo<'tcx>,
a_scopes: Vec<BoundRegionScope<'tcx>, Global>,
b_scopes: Vec<BoundRegionScope<'tcx>, Global>,
}Fields
infcx: &'me InferCtxt<'me, 'tcx>delegate: DCallback to use when we deduce an outlives relationship.
ambient_variance: VarianceHow are we relating a and b?
- Covariant means
a <: b. - Contravariant means
b <: a. - Invariant means `a == b.
- Bivariant means that it doesn’t matter.
ambient_variance_info: VarianceDiagInfo<'tcx>a_scopes: Vec<BoundRegionScope<'tcx>, Global>When we pass through a set of binders (e.g., when looking into
a fn type), we push a new bound region scope onto here. This
will contain the instantiated region for each region in those
binders. When we then encounter a ReLateBound(d, br), we can
use the De Bruijn index d to find the right scope, and then
bound region name br to find the specific instantiation from
within that scope. See replace_bound_region.
This field stores the instantiations for late-bound regions in
the a type.
b_scopes: Vec<BoundRegionScope<'tcx>, Global>Same as a_scopes, but for the b type.
Auto Trait Implementations
impl<'me, 'tcx, D> !RefUnwindSafe for TypeRelating<'me, 'tcx, D>
impl<'me, 'tcx, D> !Send for TypeRelating<'me, 'tcx, D>
impl<'me, 'tcx, D> !Sync for TypeRelating<'me, 'tcx, D>
impl<'me, 'tcx, D> Unpin for TypeRelating<'me, 'tcx, D> where
D: Unpin,
'tcx: 'me,
impl<'me, 'tcx, D> !UnwindSafe for TypeRelating<'me, 'tcx, D>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Layout
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.