pub type CanonicalVarKind<'tcx> = CanonicalVarKind<TyCtxt<'tcx>>;
Aliased Type§
pub enum CanonicalVarKind<'tcx> {
Ty {
ui: UniverseIndex,
sub_root: BoundVar,
},
Int,
Float,
PlaceholderTy(Placeholder<BoundTy>),
Region(UniverseIndex),
PlaceholderRegion(Placeholder<BoundRegion>),
Const(UniverseIndex),
PlaceholderConst(Placeholder<BoundConst>),
}
Variants§
Ty
General type variable ?T
that can be unified with arbitrary types.
We also store the index of the first type variable which is sub-unified
with this one. If there is no inference variable related to this one,
its sub_root
just points to itself.
Int
Integral type variable ?I
(that can only be unified with integral types).
Float
Floating-point type variable ?F
(that can only be unified with float types).
PlaceholderTy(Placeholder<BoundTy>)
A “placeholder” that represents “any type”.
Region(UniverseIndex)
Region variable '?R
.
PlaceholderRegion(Placeholder<BoundRegion>)
A “placeholder” that represents “any region”. Created when you
are solving a goal like for<'a> T: Foo<'a>
to represent the
bound region 'a
.
Const(UniverseIndex)
Some kind of const inference variable.
PlaceholderConst(Placeholder<BoundConst>)
A “placeholder” that represents “any const”.
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.