pub enum TyKind<I: Interner> {
Show 23 variants Adt(AdtId<I>, Substitution<I>), AssociatedType(AssocTypeId<I>, Substitution<I>), Scalar(Scalar), Tuple(usizeSubstitution<I>), Array(Ty<I>, Const<I>), Slice(Ty<I>), Raw(MutabilityTy<I>), Ref(MutabilityLifetime<I>, Ty<I>), OpaqueType(OpaqueTyId<I>, Substitution<I>), FnDef(FnDefId<I>, Substitution<I>), Str, Never, Closure(ClosureId<I>, Substitution<I>), Generator(GeneratorId<I>, Substitution<I>), GeneratorWitness(GeneratorId<I>, Substitution<I>), Foreign(ForeignDefId<I>), Error, Placeholder(PlaceholderIndex), Dyn(DynTy<I>), Alias(AliasTy<I>), Function(FnPointer<I>), BoundVar(BoundVar), InferenceVar(InferenceVarTyVariableKind),
}
Expand description

Type data, which holds the actual type information.

Variants

Adt(AdtId<I>, Substitution<I>)

Abstract data types, i.e., structs, unions, or enumerations. For example, a type like Vec<T>.

AssociatedType(AssocTypeId<I>, Substitution<I>)

an associated type like Iterator::Item; see AssociatedType for details

Scalar(Scalar)

a scalar type like bool or u32

Tuple(usizeSubstitution<I>)

a tuple of the given arity

Array(Ty<I>, Const<I>)

an array type like [T; N]

Slice(Ty<I>)

a slice type like [T]

Raw(MutabilityTy<I>)

a raw pointer type like *const T or *mut T

Ref(MutabilityLifetime<I>, Ty<I>)

a reference type like &T or &mut T

OpaqueType(OpaqueTyId<I>, Substitution<I>)

a placeholder for opaque types like impl Trait

FnDef(FnDefId<I>, Substitution<I>)

a function definition

Str

the string primitive type

Never

the never type !

Closure(ClosureId<I>, Substitution<I>)

A closure.

Generator(GeneratorId<I>, Substitution<I>)

A generator.

GeneratorWitness(GeneratorId<I>, Substitution<I>)

A generator witness.

Foreign(ForeignDefId<I>)

foreign types

Error

This can be used to represent an error, e.g. during name resolution of a type. Chalk itself will not produce this, just pass it through when given.

Placeholder(PlaceholderIndex)

instantiated from a universally quantified type, e.g., from forall<T> { .. }. Stands in as a representative of “some unknown type”.

Dyn(DynTy<I>)

A “dyn” type is a trait object type created via the “dyn Trait” syntax. In the chalk parser, the traits that the object represents is parsed as a QuantifiedInlineBound, and is then changed to a list of where clauses during lowering.

See the Opaque variant for a discussion about the use of binders here.

Alias(AliasTy<I>)

An “alias” type represents some form of type alias, such as:

  • An associated type projection like <T as Iterator>::Item
  • impl Trait types
  • Named type aliases like type Foo<X> = Vec<X>

Function(FnPointer<I>)

A function type such as for<'a> fn(&'a u32). Note that “higher-ranked” types (starting with for<>) are either function types or dyn types, and do not appear otherwise in Rust surface syntax.

BoundVar(BoundVar)

References the binding at the given depth. The index is a [de Bruijn index], so it counts back through the in-scope binders.

InferenceVar(InferenceVarTyVariableKind)

Inference variable defined in the current inference context.

Implementations

Show debug output for the application type.

Casts the type data to a type.

Compute type flags for a TyKind

Trait Implementations

Cast a value to type T.

Cast a value to type T.

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

The interner associated with the type.

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Cast a value to type U using CastTo.

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.