CanonicalVarKind

Type Alias CanonicalVarKind 

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

Fields

§sub_root: BoundVar
§

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.