fn evaluate_obligation(
        &self,
        obligation: &PredicateObligation<'tcx>,
    ) -> EvaluationResult {
        let mut _orig_values = SmallVec::new();
        let c_pred = self.canonicalize_query(&obligation.param_env.and(obligation.predicate),
                                             &mut _orig_values);
        // Run canonical query. If overflow occurs, rerun from scratch but this time
        // in standard trait query mode so that overflow is handled appropriately
        // within `SelectionContext`.
        match self.tcx.global_tcx().evaluate_obligation(c_pred) {
            Ok(result) => result,
            Err(OverflowError) => {
                let mut selcx =
                    SelectionContext::with_query_mode(&self, TraitQueryMode::Standard);
                selcx.evaluate_obligation_recursively(obligation)
                     .expect("Overflow should be caught earlier in standard query mode")
            }
        }
    }
// Helper function that canonicalizes and runs the query, as well as handles
// overflow.
Helper function that canonicalizes and runs the query, as well as handles
overflow.
Helper function that canonicalizes and runs the query as well as handles overflow .
fn evaluate_obligation(
        &self,
        obligation: &PredicateObligation<'tcx>,
    ) -> EvaluationResult {
        let mut _orig_values = SmallVec::new();
        let c_pred = self.canonicalize_query(&obligation.param_env.and(obligation.predicate),
                                             &mut _orig_values);
        // Run canonical query. If overflow occurs, rerun from scratch but this time
        // in standard trait query mode so that overflow is handled appropriately
        // within `SelectionContext`.
        match self.tcx.global_tcx().evaluate_obligation(c_pred) {
            Ok(result) => result,
            Err(OverflowError) => {
                let mut selcx =
                    SelectionContext::with_query_mode(&self, TraitQueryMode::Standard);
                selcx.evaluate_obligation_recursively(obligation)
                     .expect("Overflow should be caught earlier in standard query mode")
            }
        }
    }
fn evaluate_obligation ( & self , obligation : & PredicateObligation < ' tcx > , ) -> EvaluationResult { let mut _orig_values = SmallVec :: new ( ) ; let c_pred = self . canonicalize_query ( & obligation . param_env . and ( obligation . predicate ) , & mut _orig_values ) ; // Run canonical query. If overflow occurs, rerun from scratch but this time // in standard trait query mode so that overflow is handled appropriately // within `SelectionContext`. match self . tcx . global_tcx ( ) . evaluate_obligation ( c_pred ) { Ok ( result ) => result , Err ( OverflowError ) => { let mut selcx = SelectionContext :: with_query_mode ( & self , TraitQueryMode :: Standard ) ; selcx . evaluate_obligation_recursively ( obligation ) . expect ( " " ) } } }
Helper function that canonicalizes and runs the query, as well as handles
overflow.
Helper function that canonicalizes and runs the query as well as handles overflow .
&self
obligation
&PredicateObligation<'tcx>