pub fn make_canonicalized_query_result<T>(
        &self,
        inference_vars: CanonicalVarValues<'tcx>,
        answer: T,
        fulfill_cx: &mut FulfillmentContext<'tcx>,
    ) -> Fallible<CanonicalizedQueryResult<'gcx, T>>
    where
        T: Debug + Lift<'gcx> + TypeFoldable<'tcx>,
    {
        let query_result = self.make_query_result(inference_vars, answer, fulfill_cx)?;
        let canonical_result = self.canonicalize_response(&query_result);

        debug!(
            "make_canonicalized_query_result: canonical_result = {:#?}",
            canonical_result
        );

        Ok(Lrc::new(canonical_result))
    }
/// This method is meant to be invoked as the final step of a canonical query
/// implementation. It is given:
///
/// - the instantiated variables `inference_vars` created from the query key
/// - the result `answer` of the query
/// - a fulfillment context `fulfill_cx` that may contain various obligations which
///   have yet to be proven.
///
/// Given this, the function will process the obligations pending
/// in `fulfill_cx`:
///
/// - If all the obligations can be proven successfully, it will
///   package up any resulting region obligations (extracted from
///   `infcx`) along with the fully resolved value `answer` into a
///   query result (which is then itself canonicalized).
/// - If some obligations can be neither proven nor disproven, then
///   the same thing happens, but the resulting query is marked as ambiguous.
/// - Finally, if any of the obligations result in a hard error,
///   then `Err(NoSolution)` is returned.
This method is meant to be invoked as the final step of a canonical query
implementation. It is given.



Given this, the function will process the obligations pending
in `fulfill_cx`.

If all the obligations can be proven successfully, it will
package up any resulting region obligations (extracted from
`infcx`) along with the fully resolved value `answer` into a
query result (which is then itself canonicalized).
If some obligations can be neither proven nor disproven, then
the same thing happens, but the resulting query is marked as ambiguous.
Finally, if any of the obligations result in a hard error,
then `Err(NoSolution)` is returned.
This method is meant to be invoked as the final step of a canonical query implementation . It is given . Given this the function will process the obligations pending in ` fulfill_cx ` . If all the obligations can be proven successfully it will package up any resulting region obligations ( extracted from ` infcx ` ) along with the fully resolved value ` answer ` into a query result ( which is then itself canonicalized ) . If some obligations can be neither proven nor disproven then the same thing happens but the resulting query is marked as ambiguous . Finally if any of the obligations result in a hard error then ` Err ( NoSolution ) ` is returned .
pub fn make_canonicalized_query_result<T>(
        &self,
        inference_vars: CanonicalVarValues<'tcx>,
        answer: T,
        fulfill_cx: &mut FulfillmentContext<'tcx>,
    ) -> Fallible<CanonicalizedQueryResult<'gcx, T>>
    where
        T: Debug + Lift<'gcx> + TypeFoldable<'tcx>,
    {
        let query_result = self.make_query_result(inference_vars, answer, fulfill_cx)?;
        let canonical_result = self.canonicalize_response(&query_result);
        debug!(
            "make_canonicalized_query_result: canonical_result = {:#?}",
            canonical_result
        );
        Ok(Lrc::new(canonical_result))
    }
pub fn make_canonicalized_query_result < T > ( & self , inference_vars : CanonicalVarValues < ' tcx > , answer : T , fulfill_cx : & mut FulfillmentContext < ' tcx > , ) -> Fallible < CanonicalizedQueryResult < ' gcx , T > > where T : Debug + Lift < ' gcx > + TypeFoldable < ' tcx > , { let query_result = self . make_query_result ( inference_vars , answer , fulfill_cx ) ? ; let canonical_result = self . canonicalize_response ( & query_result ) ; debug ! ( " " canonical_result ) ; Ok ( Lrc :: new ( canonical_result ) ) }
This method is meant to be invoked as the final step of a canonical query
implementation.
This method is meant to be invoked as the final step of a canonical query implementation .
&self
inference_vars
CanonicalVarValues<'tcx>
answer
T
fulfill_cx
&mut FulfillmentContext<'tcx>