Skip to main content

AliasTyKind

Type Alias AliasTyKind 

Source
pub type AliasTyKind<'tcx> = AliasTyKind<TyCtxt<'tcx>>;

Aliased Type§

pub enum AliasTyKind<'tcx> {
    Projection {
        def_id: DefId,
    },
    Inherent {
        def_id: DefId,
    },
    Opaque {
        def_id: DefId,
    },
    Free {
        def_id: DefId,
    },
}

Variants§

§

Projection

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

§def_id: DefId
§

Inherent

An associated type in an inherent impl

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

Fields

§def_id: DefId
§

Opaque

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

§def_id: DefId
§

Free

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

§def_id: DefId

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.