fn propagate_constraints(&mut self, _body: &Body<'tcx>) {
        debug!("propagate_constraints()");

        debug!("propagate_constraints: constraints={:#?}", {
            let mut constraints: Vec<_> = self.constraints.outlives().iter().collect();
            constraints.sort();
            constraints
                .into_iter()
                .map(|c| (c, self.constraint_sccs.scc(c.sup), self.constraint_sccs.scc(c.sub)))
                .collect::<Vec<_>>()
        });

        // To propagate constraints, we walk the DAG induced by the
        // SCC. For each SCC, we visit its successors and compute
        // their values, then we union all those values to get our
        // own.
        let visited = &mut BitSet::new_empty(self.constraint_sccs.num_sccs());
        for scc_index in self.constraint_sccs.all_sccs() {
            self.propagate_constraint_sccs_if_new(scc_index, visited);
        }

        // Sort the applied member constraints so we can binary search
        // through them later.
        self.member_constraints_applied.sort_by_key(|applied| applied.member_region_scc);
    }
/// Propagate the region constraints: this will grow the values
/// for each region variable until all the constraints are
/// satisfied. Note that some values may grow **too** large to be
/// feasible, but we check this later.
Propagate the region constraints: this will grow the values
for each region variable until all the constraints are
satisfied. Note that some values may grow **too** large to be
feasible, but we check this later.
Propagate the region constraints : this will grow the values for each region variable until all the constraints are satisfied . Note that some values may grow ** too ** large to be feasible but we check this later .
fn propagate_constraints(&mut self, _body: &Body<'tcx>) {
        debug!("propagate_constraints()");
        debug!("propagate_constraints: constraints={:#?}", {
            let mut constraints: Vec<_> = self.constraints.outlives().iter().collect();
            constraints.sort();
            constraints
                .into_iter()
                .map(|c| (c, self.constraint_sccs.scc(c.sup), self.constraint_sccs.scc(c.sub)))
                .collect::<Vec<_>>()
        });
        // To propagate constraints, we walk the DAG induced by the
        // SCC. For each SCC, we visit its successors and compute
        // their values, then we union all those values to get our
        // own.
        let visited = &mut BitSet::new_empty(self.constraint_sccs.num_sccs());
        for scc_index in self.constraint_sccs.all_sccs() {
            self.propagate_constraint_sccs_if_new(scc_index, visited);
        }
        // Sort the applied member constraints so we can binary search
        // through them later.
        self.member_constraints_applied.sort_by_key(|applied| applied.member_region_scc);
    }
fn propagate_constraints ( & mut self , _body : & Body < ' tcx > ) { debug ! ( " " ) ; debug ! ( " " { let mut constraints Vec self constraints outlives ( ) iter ( ) collect ( ) constraints sort ( ) constraints into_iter ( ) map ( c ( c self constraint_sccs scc ( c sup ) self constraint_sccs scc ( c sub ) ) ) collect Vec ( ) } ) ; // To propagate constraints, we walk the DAG induced by the // SCC. For each SCC, we visit its successors and compute // their values, then we union all those values to get our // own. let visited = & mut BitSet :: new_empty ( self . constraint_sccs . num_sccs ( ) ) ; for scc_index in self . constraint_sccs . all_sccs ( ) { self . propagate_constraint_sccs_if_new ( scc_index , visited ) ; } // Sort the applied member constraints so we can binary search // through them later. self . member_constraints_applied . sort_by_key ( | applied | applied . member_region_scc ) ; }
Propagate the region constraints: this will grow the values
for each region variable until all the constraints are
satisfied.
Propagate the region constraints : this will grow the values for each region variable until all the constraints are satisfied .
&mut self
_body
&Body<'tcx>