Module rustc_trait_selection::solve::eval_ctxt::canonical

source ยท
Expand description

Canonicalization is used to separate some goal from its context, throwing away unnecessary information in the process.

This is necessary to cache goals containing inference variables and placeholders without restricting them to the current InferCtxt.

Canonicalization is fairly involved, for more details see the relevant section of the rustc-dev-guide.



  • Instantiate a CanonicalState.
  • Used by proof trees to be able to recompute intermediate actions while evaluating a goal. The var_values not only include the bound variables of the query input, but also contain all unconstrained inference vars created while evaluating this goal.