pub type ProvidedValue<'tcx> = DefKind;
Expand description

This type alias specifies the type returned from query providers and the type used for decoding. For regular queries this is the declared returned type V, but arena_cache will use <V as Deref>::Target instead.

Aliased Type§

enum ProvidedValue<'tcx> {
Show 30 variants Mod, Struct, Union, Enum, Variant, Trait, TyAlias, ForeignTy, TraitAlias, AssocTy, TyParam, Fn, Const, ConstParam, Static(Mutability), Ctor(CtorOf, CtorKind), AssocFn, AssocConst, Macro(MacroKind), ExternCrate, Use, ForeignMod, AnonConst, InlineConst, OpaqueTy, Field, LifetimeParam, GlobalAsm, Impl { of_trait: bool, }, Closure,
}

Variants§

§

Mod

§

Struct

Refers to the struct itself, [DefKind::Ctor] refers to its constructor if it exists.

§

Union

§

Enum

§

Variant

Refers to the variant itself, [DefKind::Ctor] refers to its constructor if it exists.

§

Trait

§

TyAlias

Type alias: type Foo = Bar;

§

ForeignTy

Type from an extern block.

§

TraitAlias

Trait alias: trait IntIterator = Iterator<Item = i32>;

§

AssocTy

Associated type: trait MyTrait { type Assoc; }

§

TyParam

Type parameter: the T in struct Vec<T> { ... }

§

Fn

§

Const

§

ConstParam

Constant generic parameter: struct Foo<const N: usize> { ... }

§

Static(Mutability)

§

Ctor(CtorOf, CtorKind)

Refers to the struct or enum variant’s constructor.

The reason Ctor exists in addition to [DefKind::Struct] and [DefKind::Variant] is because structs and enum variants exist in the type namespace, whereas struct and enum variant constructors exist in the value namespace.

You may wonder why enum variants exist in the type namespace as opposed to the value namespace. Check out RFC 2593 for intuition on why that is.

§

AssocFn

Associated function: impl MyStruct { fn associated() {} } or trait Foo { fn associated() {} }

§

AssocConst

Associated constant: trait MyTrait { const ASSOC: usize; }

§

Macro(MacroKind)

§

ExternCrate

§

Use

§

ForeignMod

An extern block.

§

AnonConst

Anonymous constant, e.g. the 1 + 2 in [u8; 1 + 2]

§

InlineConst

An inline constant, e.g. const { 1 + 2 }

§

OpaqueTy

Opaque type, aka impl Trait.

§

Field

§

LifetimeParam

Lifetime parameter: the 'a in struct Foo<'a> { ... }

§

GlobalAsm

A use of global_asm!.

§

Impl

Fields

§of_trait: bool
§

Closure

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: 2 bytes

Size for each variant:

  • Mod: 0 bytes
  • Struct: 0 bytes
  • Union: 0 bytes
  • Enum: 0 bytes
  • Variant: 0 bytes
  • Trait: 0 bytes
  • TyAlias: 0 bytes
  • ForeignTy: 0 bytes
  • TraitAlias: 0 bytes
  • AssocTy: 0 bytes
  • TyParam: 0 bytes
  • Fn: 0 bytes
  • Const: 0 bytes
  • ConstParam: 0 bytes
  • Static: 1 byte
  • Ctor: 2 bytes
  • AssocFn: 0 bytes
  • AssocConst: 0 bytes
  • Macro: 1 byte
  • ExternCrate: 0 bytes
  • Use: 0 bytes
  • ForeignMod: 0 bytes
  • AnonConst: 0 bytes
  • InlineConst: 0 bytes
  • OpaqueTy: 0 bytes
  • Field: 0 bytes
  • LifetimeParam: 0 bytes
  • GlobalAsm: 0 bytes
  • Impl: 1 byte
  • Closure: 0 bytes