Module rustc_infer::infer::relate
source Β· Expand description
This module contains the definitions of most TypeRelation
s 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).
Modules§
- combine πThere are four type combiners: TypeRelating, Lub, and Glb, and
NllTypeRelating
in rustc_borrowck, which is only used for NLL. - generalize π
- glb πGreatest lower bound. See
lattice
. - higher_ranked πHelper routines for higher-ranked things. See the
doc
module at the end of the file for details. - lattice πLattice variables
- lub πLeast upper bound. See
lattice
. - type_relating π
Structs§
Enums§
- Whether aliases should be related structurally or not. Used to adjust the behavior of generalization and combine.
- 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§
Functions§
- Relates
a
andb
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. - Relates
a
andb
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.