fn try_propagate_universal_region_error(
        &self,
        longer_fr: RegionVid,
        shorter_fr: RegionVid,
        body: &Body<'tcx>,
        propagated_outlives_requirements: &mut Option<&mut Vec<ClosureOutlivesRequirement<'tcx>>>,
    ) -> bool {
        if let Some(propagated_outlives_requirements) = propagated_outlives_requirements {
            // Shrink `longer_fr` until we find a non-local region (if we do).
            // We'll call it `fr-` -- it's ever so slightly smaller than
            // `longer_fr`.
            if let Some(fr_minus) =
                self.universal_region_relations.non_local_lower_bound(longer_fr) {
                debug!("try_propagate_universal_region_error: fr_minus={:?}", fr_minus);

                let blame_span_category =
                    self.find_outlives_blame_span(body, longer_fr,
                                                  NLLRegionVariableOrigin::FreeRegion,shorter_fr);

                // Grow `shorter_fr` until we find some non-local regions. (We
                // always will.)  We'll call them `shorter_fr+` -- they're ever
                // so slightly larger than `shorter_fr`.
                let shorter_fr_plus = self
                    .universal_region_relations
                    .non_local_upper_bounds(&shorter_fr);
                debug!(
                    "try_propagate_universal_region_error: shorter_fr_plus={:?}",
                    shorter_fr_plus
                );
                for &&fr in &shorter_fr_plus {
                    // Push the constraint `fr-: shorter_fr+`
                    propagated_outlives_requirements.push(ClosureOutlivesRequirement {
                        subject: ClosureOutlivesSubject::Region(fr_minus),
                        outlived_free_region: fr,
                        blame_span: blame_span_category.1,
                        category: blame_span_category.0,
                    });
                }
                return true;
            }
        }

        false
    }
/// Attempt to propagate a region error (e.g. `'a: 'b`) that is not met to a closure's
/// creator. If we cannot, then the caller should report an error to the user.
///
/// Returns `true` if the error was propagated, and `false` otherwise.
Attempt to propagate a region error  that is not met to a closure's
creator. If we cannot, then the caller should report an error to the user.

Returns `true` if the error was propagated, and `false` otherwise.
Attempt to propagate a region error that is not met to a closure ' s creator . If we cannot then the caller should report an error to the user . Returns ` true ` if the error was propagated and ` false ` otherwise .
fn try_propagate_universal_region_error(
        &self,
        longer_fr: RegionVid,
        shorter_fr: RegionVid,
        body: &Body<'tcx>,
        propagated_outlives_requirements: &mut Option<&mut Vec<ClosureOutlivesRequirement<'tcx>>>,
    ) -> bool {
        if let Some(propagated_outlives_requirements) = propagated_outlives_requirements {
            // Shrink `longer_fr` until we find a non-local region (if we do).
            // We'll call it `fr-` -- it's ever so slightly smaller than
            // `longer_fr`.
            if let Some(fr_minus) =
                self.universal_region_relations.non_local_lower_bound(longer_fr) {
                debug!("try_propagate_universal_region_error: fr_minus={:?}", fr_minus);
                let blame_span_category =
                    self.find_outlives_blame_span(body, longer_fr,
                                                  NLLRegionVariableOrigin::FreeRegion,shorter_fr);
                // Grow `shorter_fr` until we find some non-local regions. (We
                // always will.)  We'll call them `shorter_fr+` -- they're ever
                // so slightly larger than `shorter_fr`.
                let shorter_fr_plus = self
                    .universal_region_relations
                    .non_local_upper_bounds(&shorter_fr);
                debug!(
                    "try_propagate_universal_region_error: shorter_fr_plus={:?}",
                    shorter_fr_plus
                );
                for &&fr in &shorter_fr_plus {
                    // Push the constraint `fr-: shorter_fr+`
                    propagated_outlives_requirements.push(ClosureOutlivesRequirement {
                        subject: ClosureOutlivesSubject::Region(fr_minus),
                        outlived_free_region: fr,
                        blame_span: blame_span_category.1,
                        category: blame_span_category.0,
                    });
                }
                return true;
            }
        }
        false
    }
fn try_propagate_universal_region_error ( & self , longer_fr : RegionVid , shorter_fr : RegionVid , body : & Body < ' tcx > , propagated_outlives_requirements : & mut Option < & mut Vec < ClosureOutlivesRequirement < ' tcx > > > , ) -> bool { if let Some ( propagated_outlives_requirements ) = propagated_outlives_requirements { // Shrink `longer_fr` until we find a non-local region (if we do). // We'll call it `fr-` -- it's ever so slightly smaller than // `longer_fr`. if let Some ( fr_minus ) = self . universal_region_relations . non_local_lower_bound ( longer_fr ) { debug ! ( " " fr_minus ) ; let blame_span_category = self . find_outlives_blame_span ( body , longer_fr , NLLRegionVariableOrigin :: FreeRegion , shorter_fr ) ; // Grow `shorter_fr` until we find some non-local regions. (We // always will.)  We'll call them `shorter_fr+` -- they're ever // so slightly larger than `shorter_fr`. let shorter_fr_plus = self . universal_region_relations . non_local_upper_bounds ( & shorter_fr ) ; debug ! ( " " shorter_fr_plus ) ; for & & fr in & shorter_fr_plus { // Push the constraint `fr-: shorter_fr+` propagated_outlives_requirements . push ( ClosureOutlivesRequirement { subject : ClosureOutlivesSubject :: Region ( fr_minus ) , outlived_free_region : fr , blame_span : blame_span_category . 1 , category : blame_span_category . 0 , } ) ; } return true ; } } false }
Attempt to propagate a region error (e.g.
Attempt to propagate a region error ( e . g .
&self
longer_fr
RegionVid
shorter_fr
RegionVid
body
&Body<'tcx>
propagated_outlives_requirements
&mut Option<&mut Vec<ClosureOutlivesRequirement<'tcx>>>