Enum rustc_middle::ty::sty::TyKind [−][src]
pub enum TyKind<'tcx> {
Show variants
Bool,
Char,
Int(IntTy),
Uint(UintTy),
Float(FloatTy),
Adt(&'tcx AdtDef, SubstsRef<'tcx>),
Foreign(DefId),
Str,
Array(Ty<'tcx>, &'tcx Const<'tcx>),
Slice(Ty<'tcx>),
RawPtr(TypeAndMut<'tcx>),
Ref(Region<'tcx>, Ty<'tcx>, Mutability),
FnDef(DefId, SubstsRef<'tcx>),
FnPtr(PolyFnSig<'tcx>),
Dynamic(&'tcx List<Binder<'tcx, ExistentialPredicate<'tcx>>>, Region<'tcx>),
Closure(DefId, SubstsRef<'tcx>),
Generator(DefId, SubstsRef<'tcx>, Movability),
GeneratorWitness(Binder<'tcx, &'tcx List<Ty<'tcx>>>),
Never,
Tuple(SubstsRef<'tcx>),
Projection(ProjectionTy<'tcx>),
Opaque(DefId, SubstsRef<'tcx>),
Param(ParamTy),
Bound(DebruijnIndex, BoundTy),
Placeholder(PlaceholderType),
Infer(InferTy),
Error(DelaySpanBugEmitted),
}Expand description
Defines the kinds of types.
N.B., if you change this, you’ll probably want to change the corresponding
AST structure in rustc_ast/src/ast.rs as well.
Variants
Expand description
The primitive boolean type. Written as bool.
Expand description
The primitive character type; holds a Unicode scalar value
(a non-surrogate code point). Written as char.
Int(IntTy)Expand description
A primitive signed integer type. For example, i32.
Uint(UintTy)Expand description
A primitive unsigned integer type. For example, u32.
Float(FloatTy)Expand description
A primitive floating-point type. For example, f64.
Expand description
Algebraic data types (ADT). For example: structures, enumerations and unions.
InternalSubsts here, possibly against intuition, may contain Params.
That is, even after substitution it is possible that there are type
variables. This happens when the Adt corresponds to an ADT
definition and not a concrete use of it.
Foreign(DefId)Expand description
An unsized FFI type that is opaque to Rust. Written as extern type T.
Expand description
The pointee of a string slice. Written as str.
Expand description
An array with the given length. Written as [T; n].
Slice(Ty<'tcx>)Expand description
The pointee of an array slice. Written as [T].
RawPtr(TypeAndMut<'tcx>)Expand description
A raw pointer. Written as *mut T or *const T
Ref(Region<'tcx>, Ty<'tcx>, Mutability)Expand description
A reference; a pointer with an associated lifetime. Written as
&'a mut T or &'a T.
Expand description
The anonymous type of a function declaration/definition. Each
function has a unique type, which is output (for a function
named foo returning an i32) as fn() -> i32 {foo}.
For example the type of bar here:
fn foo() -> i32 { 1 } let bar = foo; // bar: fn() -> i32 {foo}
FnPtr(PolyFnSig<'tcx>)Expand description
A pointer to a function. Written as fn() -> i32.
For example the type of bar here:
fn foo() -> i32 { 1 } let bar: fn() -> i32 = foo;
Dynamic(&'tcx List<Binder<'tcx, ExistentialPredicate<'tcx>>>, Region<'tcx>)Expand description
A trait object. Written as dyn for<'b> Trait<'b, Assoc = u32> + Send + 'a.
Expand description
The anonymous type of a closure. Used to represent the type of
|a| a.
Generator(DefId, SubstsRef<'tcx>, Movability)Expand description
The anonymous type of a generator. Used to represent the type of
|a| yield a.
Expand description
A type representing the types stored inside a generator. This should only appear in GeneratorInteriors.
Expand description
The never type !.
Tuple(SubstsRef<'tcx>)Expand description
A tuple type. For example, (i32, bool).
Use TyS::tuple_fields to iterate over the field types.
Projection(ProjectionTy<'tcx>)Expand description
The projection of an associated type. For example,
<T as Trait<..>>::N.
Expand description
Opaque (impl Trait) type found in a return type.
The DefId comes either from
- the
impl Traitast::Ty node, - or the
type Foo = impl Traitdeclaration The substitutions are for the generics of the function in question. After typeck, the concrete type can be found in thetypesmap.
Param(ParamTy)Expand description
A type parameter; for example, T in fn f<T>(x: T) {}.
Bound(DebruijnIndex, BoundTy)Expand description
Bound type variable, used only when preparing a trait query.
Placeholder(PlaceholderType)Expand description
A placeholder type - universally quantified higher-ranked type.
Infer(InferTy)Expand description
A type variable used during type checking.
Error(DelaySpanBugEmitted)Expand description
A placeholder for a type which could not be computed; this is propagated to avoid useless error messages.
Implementations
impl<'tcx> TyKind<'tcx>[src]
impl<'tcx> TyKind<'tcx>[src]Trait Implementations
impl<'tcx, '__ctx> HashStable<StableHashingContext<'__ctx>> for TyKind<'tcx>[src]
impl<'tcx, '__ctx> HashStable<StableHashingContext<'__ctx>> for TyKind<'tcx>[src]fn hash_stable(
&self,
__hcx: &mut StableHashingContext<'__ctx>,
__hasher: &mut StableHasher
)[src]
&self,
__hcx: &mut StableHashingContext<'__ctx>,
__hasher: &mut StableHasher
)
impl<'tcx> Ord for TyKind<'tcx>[src]
impl<'tcx> Ord for TyKind<'tcx>[src]impl<'tcx> PartialOrd<TyKind<'tcx>> for TyKind<'tcx>[src]
impl<'tcx> PartialOrd<TyKind<'tcx>> for TyKind<'tcx>[src]fn partial_cmp(&self, other: &TyKind<'tcx>) -> Option<Ordering>[src]
fn partial_cmp(&self, other: &TyKind<'tcx>) -> Option<Ordering>[src]This method returns an ordering between self and other values if one exists. Read more
#[must_use]fn lt(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool1.0.0[src]This method tests less than (for self and other) and is used by the < operator. Read more
#[must_use]fn le(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool1.0.0[src]This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl<'tcx> Eq for TyKind<'tcx>[src]
impl<'tcx> StructuralEq for TyKind<'tcx>[src]
impl<'tcx> StructuralPartialEq for TyKind<'tcx>[src]
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for TyKind<'tcx>
impl<'tcx> !Send for TyKind<'tcx>
impl<'tcx> !Sync for TyKind<'tcx>
impl<'tcx> Unpin for TyKind<'tcx>
impl<'tcx> !UnwindSafe for TyKind<'tcx>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> MaybeResult<T> for T[src]
impl<T> MaybeResult<T> for T[src]impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn to_owned(&self) -> T[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)[src]
pub fn clone_into(&self, target: &mut T)[src]🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]fn with_constness(self, constness: Constness) -> ConstnessAnd<Self>[src]
fn with_const(self) -> ConstnessAnd<Self>[src]
fn without_const(self) -> ConstnessAnd<Self>[src]
impl<'a, T> Captures<'a> for T where
T: ?Sized, [src]
T: ?Sized,