Module canonical

Module 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.

Modulesยง

canonicalizer

Traitsยง

ResponseT ๐Ÿ”’

Functionsยง

canonicalize_goal ๐Ÿ”’
Canonicalizes the goal remembering the original values for each bound variable.
canonicalize_response ๐Ÿ”’
compute_query_response_instantiation_values ๐Ÿ”’
This returns the canonical variable values to instantiate the bound variables of the canonical response. This depends on the original_values for the bound variables.
instantiate_and_apply_query_response ๐Ÿ”’
After calling a canonical query, we apply the constraints returned by the query using this function.
instantiate_canonical_state
make_canonical_state
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.
register_new_opaque_types ๐Ÿ”’
register_region_constraints ๐Ÿ”’
response_no_constraints_raw
unify_query_var_values ๐Ÿ”’
Unify the original_values with the var_values returned by the canonical query..