rustc_hir::hir

Enum TyKind

Source
pub enum TyKind<'hir> {
Show 17 variants InferDelegation(DefId, InferDelegationKind), Slice(&'hir Ty<'hir>), Array(&'hir Ty<'hir>, &'hir ConstArg<'hir>), Ptr(MutTy<'hir>), Ref(&'hir Lifetime, MutTy<'hir>), BareFn(&'hir BareFnTy<'hir>), UnsafeBinder(&'hir UnsafeBinderTy<'hir>), Never, Tup(&'hir [Ty<'hir>]), Path(QPath<'hir>), OpaqueDef(&'hir OpaqueTy<'hir>), TraitAscription(GenericBounds<'hir>), TraitObject(&'hir [PolyTraitRef<'hir>], &'hir Lifetime, TraitObjectSyntax), Typeof(&'hir AnonConst), Infer, Err(ErrorGuaranteed), Pat(&'hir Ty<'hir>, &'hir Pat<'hir>),
}
Expand description

The various kinds of types recognized by the compiler.

Variants§

§

InferDelegation(DefId, InferDelegationKind)

Actual type should be inherited from DefId signature

§

Slice(&'hir Ty<'hir>)

A variable length slice (i.e., [T]).

§

Array(&'hir Ty<'hir>, &'hir ConstArg<'hir>)

A fixed length array (i.e., [T; n]).

§

Ptr(MutTy<'hir>)

A raw pointer (i.e., *const T or *mut T).

§

Ref(&'hir Lifetime, MutTy<'hir>)

A reference (i.e., &'a T or &'a mut T).

§

BareFn(&'hir BareFnTy<'hir>)

A bare function (e.g., fn(usize) -> bool).

§

UnsafeBinder(&'hir UnsafeBinderTy<'hir>)

An unsafe binder type (e.g. unsafe<'a> Foo<'a>).

§

Never

The never type (!).

§

Tup(&'hir [Ty<'hir>])

A tuple ((A, B, C, D, ...)).

§

Path(QPath<'hir>)

A path to a type definition (module::module::...::Type), or an associated type (e.g., <Vec<T> as Trait>::Type or <T>::Target).

Type parameters may be stored in each PathSegment.

§

OpaqueDef(&'hir OpaqueTy<'hir>)

An opaque type definition itself. This is only used for impl Trait.

§

TraitAscription(GenericBounds<'hir>)

A trait ascription type, which is impl Trait within a local binding.

§

TraitObject(&'hir [PolyTraitRef<'hir>], &'hir Lifetime, TraitObjectSyntax)

A trait object type Bound1 + Bound2 + Bound3 where Bound is a trait or a lifetime.

§

Typeof(&'hir AnonConst)

Unused for now.

§

Infer

TyKind::Infer means the type should be inferred instead of it having been specified. This can appear anywhere in a type.

Note: Not all inferred types are represented as TyKind::Infer. In cases where it is ambiguous whether a generic arg is a type or a const, inference variables are represented as GenericArg::Infer instead.

§

Err(ErrorGuaranteed)

Placeholder for a type that has failed to be defined.

§

Pat(&'hir Ty<'hir>, &'hir Pat<'hir>)

Pattern types (pattern_type!(u32 is 1..))

Trait Implementations§

Source§

impl<'hir> Clone for TyKind<'hir>

Source§

fn clone(&self) -> TyKind<'hir>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'hir> Debug for TyKind<'hir>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'hir, __CTX> HashStable<__CTX> for TyKind<'hir>
where __CTX: HashStableContext,

Source§

fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)

Source§

impl<'hir> Copy for TyKind<'hir>

Auto Trait Implementations§

§

impl<'hir> DynSend for TyKind<'hir>

§

impl<'hir> DynSync for TyKind<'hir>

§

impl<'hir> Freeze for TyKind<'hir>

§

impl<'hir> RefUnwindSafe for TyKind<'hir>

§

impl<'hir> Send for TyKind<'hir>

§

impl<'hir> Sync for TyKind<'hir>

§

impl<'hir> Unpin for TyKind<'hir>

§

impl<'hir> UnwindSafe for TyKind<'hir>

Blanket Implementations§

Source§

impl<T> Aligned for T

Source§

const ALIGN: Alignment = _

Alignment of Self.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T
where T: Copy,

Source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T

Source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<'a, T> Captures<'a> for T
where T: ?Sized,

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 32 bytes

Size for each variant:

  • InferDelegation: 31 bytes
  • Slice: 15 bytes
  • Array: 23 bytes
  • Ptr: 23 bytes
  • Ref: 31 bytes
  • BareFn: 15 bytes
  • UnsafeBinder: 15 bytes
  • Never: 0 bytes
  • Tup: 23 bytes
  • Path: 31 bytes
  • OpaqueDef: 15 bytes
  • TraitAscription: 23 bytes
  • TraitObject: 31 bytes
  • Typeof: 15 bytes
  • Infer: 0 bytes
  • Err: 0 bytes
  • Pat: 23 bytes