Module relate

Source
Expand description

This module contains the definitions of most TypeRelations in the type system (except for some relations used for diagnostics and heuristics in the compiler). As well as the implementation of Relate for interned things (Ty/Const/etc).

Enums§

StructurallyRelateAliases
Whether aliases should be related structurally or not. Used to adjust the behavior of generalization and combine.
VarianceDiagInfo
Extra information about why we ended up with a particular variance. This is only used to add more information to error messages, and has no effect on soundness. While choosing the ‘wrong’ VarianceDiagInfo may lead to confusing notes in error messages, it will never cause a miscompilation or unsoundness.

Traits§

PredicateEmittingRelation
Relate
TypeRelation

Functions§

relate_args_invariantly
relate_args_with_variances
structurally_relate_consts
Relates a and b structurally, calling the relation for all nested values. Any semantic equality, e.g. of unevaluated consts, and inference variables have to be handled by the caller.
structurally_relate_tys
Relates a and b structurally, calling the relation for all nested values. Any semantic equality, e.g. of projections, and inference variables have to be handled by the caller.

Type Aliases§

RelateResult