fn check_inferred_predicates<'tcx>(
    tcx: TyCtxt<'tcx>,
    def_id: DefId,
    args: GenericArgsRef<'tcx>,
    global_inferred_outlives: &FxIndexMap<DefId, EarlyBinder<FxIndexMap<OutlivesPredicate<GenericArg<'tcx>, Region<'tcx>>, Span>>>,
    required_predicates: &mut FxIndexMap<OutlivesPredicate<GenericArg<'tcx>, Region<'tcx>>, Span>
Expand description

Check the inferred predicates declared on the type.


struct Outer<'a, T> {
    outer: Inner<'a, T>,

struct Inner<'b, U> {
    inner: &'b U,

Here, when processing the type of field outer, we would request the set of implicit predicates computed for Inner thus far. This will initially come back empty, but in next round we will get U: 'b. We then apply the instantiation ['b => 'a, U => T] and thus get the requirement that T: 'a holds for Outer.