Enum chalk_ir::TyKind [−][src]
pub enum TyKind<I: Interner> {}Show 23 variants
Adt(AdtId<I>, Substitution<I>), AssociatedType(AssocTypeId<I>, Substitution<I>), Scalar(Scalar), Tuple(usize, Substitution<I>), Array(Ty<I>, Const<I>), Slice(Ty<I>), Raw(Mutability, Ty<I>), Ref(Mutability, Lifetime<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(InferenceVar, TyVariableKind),
Expand description
Type data, which holds the actual type information.
Variants
Abstract data types, i.e., structs, unions, or enumerations.
For example, a type like Vec<T>
.
Tuple Fields of Adt
0: AdtId<I>
1: Substitution<I>
an associated type like Iterator::Item
; see AssociatedType
for details
Tuple Fields of AssociatedType
0: AssocTypeId<I>
1: Substitution<I>
a scalar type like bool
or u32
Tuple Fields of Scalar
0: Scalar
a tuple of the given arity
Tuple Fields of Tuple
0: usize
1: Substitution<I>
an array type like [T; N]
a slice type like [T]
Tuple Fields of Slice
0: Ty<I>
a raw pointer type like *const T
or *mut T
Tuple Fields of Raw
0: Mutability
1: Ty<I>
a reference type like &T
or &mut T
Tuple Fields of Ref
a placeholder for opaque types like impl Trait
Tuple Fields of OpaqueType
0: OpaqueTyId<I>
1: Substitution<I>
a function definition
Tuple Fields of FnDef
0: FnDefId<I>
1: Substitution<I>
the string primitive type
the never type !
A closure.
Tuple Fields of Closure
0: ClosureId<I>
1: Substitution<I>
A generator.
Tuple Fields of Generator
0: GeneratorId<I>
1: Substitution<I>
A generator witness.
Tuple Fields of GeneratorWitness
0: GeneratorId<I>
1: Substitution<I>
foreign types
Tuple Fields of Foreign
0: ForeignDefId<I>
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.
instantiated from a universally quantified type, e.g., from
forall<T> { .. }
. Stands in as a representative of “some
unknown type”.
Tuple Fields of Placeholder
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.
Tuple Fields of Dyn
0: DynTy<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>
Tuple Fields of Alias
0: AliasTy<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.
Tuple Fields of Function
0: FnPointer<I>
References the binding at the given depth. The index is a [de Bruijn index], so it counts back through the in-scope binders.
Tuple Fields of BoundVar
0: BoundVar
Inference variable defined in the current inference context.
Tuple Fields of InferenceVar
Implementations
Show debug output for the application type.
Trait Implementations
type Interner = I
type Interner = I
The interner associated with the type.
impl<I: Interner> Copy for TyKind<I> where
I::InternedLifetime: Copy,
I::InternedSubstitution: Copy,
I::InternedVariableKinds: Copy,
I::InternedQuantifiedWhereClauses: Copy,
I::InternedType: Copy,
I::InternedConst: Copy,
Auto Trait Implementations
impl<I> RefUnwindSafe for TyKind<I> where
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::FnAbi: RefUnwindSafe,
<I as Interner>::InternedAdtId: RefUnwindSafe,
<I as Interner>::InternedConst: RefUnwindSafe,
<I as Interner>::InternedLifetime: RefUnwindSafe,
<I as Interner>::InternedQuantifiedWhereClauses: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
<I as Interner>::InternedType: RefUnwindSafe,
<I as Interner>::InternedVariableKinds: RefUnwindSafe,
impl<I> Send for TyKind<I> where
<I as Interner>::DefId: Send,
<I as Interner>::FnAbi: Send,
<I as Interner>::InternedAdtId: Send,
<I as Interner>::InternedConst: Send,
<I as Interner>::InternedLifetime: Send,
<I as Interner>::InternedQuantifiedWhereClauses: Send,
<I as Interner>::InternedSubstitution: Send,
<I as Interner>::InternedType: Send,
<I as Interner>::InternedVariableKinds: Send,
impl<I> Sync for TyKind<I> where
<I as Interner>::DefId: Sync,
<I as Interner>::FnAbi: Sync,
<I as Interner>::InternedAdtId: Sync,
<I as Interner>::InternedConst: Sync,
<I as Interner>::InternedLifetime: Sync,
<I as Interner>::InternedQuantifiedWhereClauses: Sync,
<I as Interner>::InternedSubstitution: Sync,
<I as Interner>::InternedType: Sync,
<I as Interner>::InternedVariableKinds: Sync,
impl<I> Unpin for TyKind<I> where
<I as Interner>::DefId: Unpin,
<I as Interner>::FnAbi: Unpin,
<I as Interner>::InternedAdtId: Unpin,
<I as Interner>::InternedConst: Unpin,
<I as Interner>::InternedLifetime: Unpin,
<I as Interner>::InternedQuantifiedWhereClauses: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
<I as Interner>::InternedType: Unpin,
<I as Interner>::InternedVariableKinds: Unpin,
impl<I> UnwindSafe for TyKind<I> where
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::FnAbi: UnwindSafe,
<I as Interner>::InternedAdtId: UnwindSafe,
<I as Interner>::InternedConst: UnwindSafe,
<I as Interner>::InternedLifetime: UnwindSafe,
<I as Interner>::InternedQuantifiedWhereClauses: UnwindSafe,
<I as Interner>::InternedSubstitution: UnwindSafe,
<I as Interner>::InternedType: UnwindSafe,
<I as Interner>::InternedVariableKinds: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
Cast a value to type U
using CastTo
.