Skip to main content

AliasTermKind

Type Alias AliasTermKind 

pub type AliasTermKind<'db> = AliasTermKind<DbInterner<'db>>;

Aliased Type§

pub enum AliasTermKind<'db> {
    ProjectionTy {
        def_id: TraitAssocTyId,
    },
    InherentTy {
        def_id: InherentAssocTyId,
    },
    OpaqueTy {
        def_id: OpaqueTyIdWrapper,
    },
    FreeTy {
        def_id: FreeTyAliasId,
    },
    UnevaluatedConst {
        def_id: GeneralConstIdWrapper,
    },
    ProjectionConst {
        def_id: TraitAssocConstId,
    },
    FreeConst {
        def_id: FreeConstAliasId,
    },
    InherentConst {
        def_id: InherentAssocConstId,
    },
}

Variants§

§

ProjectionTy

A projection <Type as Trait>::AssocType.

Can get normalized away if monomorphic enough.

The def_id is the DefId of the TraitItem for the associated type.

Note that the def_id is not the DefId of the TraitRef containing this associated type, which is in interner.associated_item(def_id).container, aka. interner.parent(def_id).

Fields

§

InherentTy

An associated type in an inherent impl

The def_id is the DefId of the ImplItem for the associated type.

Fields

§

OpaqueTy

An opaque type (usually from impl Trait in type aliases or function return types)

def_id is the DefId of the OpaqueType item.

Can only be normalized away in PostAnalysis mode or its defining scope.

During codegen, interner.type_of(def_id) can be used to get the type of the underlying type if the type is an opaque.

Fields

§

FreeTy

A type alias that actually checks its trait bounds.

Currently only used if the type alias references opaque types. Can always be normalized away.

Fields

§

UnevaluatedConst

An unevaluated anonymous constants.

§

ProjectionConst

An unevaluated const coming from an associated const.

Fields

§

FreeConst

A top level const item not part of a trait or impl.

Fields

§

InherentConst

An associated const in an inherent impl