pub enum FullDefKind<Body> {
Show 28 variants
Adt {
param_env: ParamEnv,
adt_kind: AdtKind,
variants: IndexVec<VariantIdx, VariantDef>,
flags: AdtFlags,
repr: ReprOptions,
drop_glue: Option<Body>,
destruct_impl: Box<VirtualTraitImpl>,
},
TyAlias {
param_env: ParamEnv,
ty: Ty,
},
ForeignTy,
AssocTy {
param_env: ParamEnv,
implied_predicates: GenericPredicates,
associated_item: AssocItem,
value: Option<Ty>,
},
OpaqueTy,
Trait {
param_env: ParamEnv,
implied_predicates: GenericPredicates,
self_predicate: TraitPredicate,
items: Vec<AssocItem>,
dyn_self: Option<Ty>,
},
TraitAlias {
param_env: ParamEnv,
implied_predicates: GenericPredicates,
self_predicate: TraitPredicate,
dyn_self: Option<Ty>,
},
TraitImpl {
param_env: ParamEnv,
trait_pred: TraitPredicate,
dyn_self: Option<Ty>,
implied_impl_exprs: Vec<ImplExpr>,
items: Vec<ImplAssocItem>,
},
InherentImpl {
param_env: ParamEnv,
ty: Ty,
items: Vec<AssocItem>,
},
Fn {
param_env: ParamEnv,
inline: InlineAttr,
is_const: bool,
sig: PolyFnSig,
body: Option<Body>,
},
AssocFn {
param_env: ParamEnv,
associated_item: AssocItem,
inline: InlineAttr,
is_const: bool,
vtable_sig: Option<PolyFnSig>,
sig: PolyFnSig,
body: Option<Body>,
},
Closure {
args: ClosureArgs,
is_const: bool,
fn_once_impl: Box<VirtualTraitImpl>,
fn_mut_impl: Option<Box<VirtualTraitImpl>>,
fn_impl: Option<Box<VirtualTraitImpl>>,
once_shim: Option<Body>,
drop_glue: Option<Body>,
destruct_impl: Box<VirtualTraitImpl>,
},
Const {
param_env: ParamEnv,
ty: Ty,
kind: ConstKind,
body: Option<Body>,
value: Option<ConstantExpr>,
},
AssocConst {
param_env: ParamEnv,
associated_item: AssocItem,
ty: Ty,
body: Option<Body>,
value: Option<ConstantExpr>,
},
Static {
param_env: ParamEnv,
safety: Safety,
mutability: Mutability,
nested: bool,
ty: Ty,
body: Option<Body>,
},
ExternCrate,
Use,
Mod {
items: Vec<(Option<Ident>, DefId)>,
},
ForeignMod {
items: Vec<DefId>,
},
TyParam,
ConstParam,
LifetimeParam,
Variant,
Ctor {
adt_def_id: DefId,
ctor_of: CtorOf,
variant_id: VariantIdx,
fields: IndexVec<FieldIdx, FieldDef>,
output_ty: Ty,
},
Field,
Macro(MacroKinds),
GlobalAsm,
SyntheticCoroutineBody,
}Expand description
Imbues [rustc_hir::def::DefKind] with a lot of extra information.
Variants§
Adt
ADts (Struct, Enum and Union map to this variant).
Fields
variants: IndexVec<VariantIdx, VariantDef>repr: ReprOptionsdestruct_impl: Box<VirtualTraitImpl>Info required to construct a virtual Drop impl for this adt.
TyAlias
Type alias: type Foo = Bar;
ForeignTy
Type from an extern block.
AssocTy
Associated type: trait MyTrait { type Assoc; }
Fields
implied_predicates: GenericPredicatesOpaqueTy
Opaque type, aka impl Trait.
Trait
Fields
implied_predicates: GenericPredicatesself_predicate: TraitPredicateThe special Self: Trait clause.
TraitAlias
Trait alias: trait IntIterator = Iterator<Item = i32>;
Fields
implied_predicates: GenericPredicatesself_predicate: TraitPredicateThe special Self: Trait clause.
TraitImpl
Fields
trait_pred: TraitPredicateThe trait that is implemented by this impl block.
dyn_self: Option<Ty>dyn Trait<Args.., Ty = <Self as Trait>::Ty..> for the implemented trait. This is
Some iff the trait is dyn-compatible.
implied_impl_exprs: Vec<ImplExpr>The ImplExprs required to satisfy the predicates on the trait declaration. E.g.:
trait Foo: Bar {}
impl Foo for () {} // would supply an `ImplExpr` for `Self: Bar`.items: Vec<ImplAssocItem>Associated items, in the order of the trait declaration. Includes defaulted items.
InherentImpl
Fields
Fn
AssocFn
Associated function: impl MyStruct { fn associated() {} } or trait Foo { fn associated() {} }
Fields
inline: InlineAttrClosure
A closure, coroutine, or coroutine-closure.
Note: the (early-bound) generics of a closure are the same as those of the item in which it is defined.
Fields
args: ClosureArgsfn_once_impl: Box<VirtualTraitImpl>Info required to construct a virtual FnOnce impl for this closure.
fn_mut_impl: Option<Box<VirtualTraitImpl>>Info required to construct a virtual FnMut impl for this closure.
fn_impl: Option<Box<VirtualTraitImpl>>Info required to construct a virtual Fn impl for this closure.
once_shim: Option<Body>For FnMut&Fn closures: the MIR for the call_once method; it simply calls
call_mut.
destruct_impl: Box<VirtualTraitImpl>Info required to construct a virtual Drop impl for this closure.
Const
AssocConst
Associated constant: trait MyTrait { const ASSOC: usize; }
Fields
value: Option<ConstantExpr>Static
Fields
mutability: MutabilityWhether it’s a static mut or just a static.
ExternCrate
Use
Mod
ForeignMod
An extern block.
TyParam
Type parameter: the T in struct Vec<T> { ... }
ConstParam
Constant generic parameter: struct Foo<const N: usize> { ... }
LifetimeParam
Lifetime parameter: the 'a in struct Foo<'a> { ... }
Variant
Refers to the variant definition, DefKind::Ctor refers to its constructor if it exists.
Ctor
The constructor function of a tuple/unit struct or tuple/unit enum variant.
Fields
variant_id: VariantIdxField
A field in a struct, enum or union. e.g.
barinstruct Foo { bar: u8 }Foo::Bar::0inenum Foo { Bar(u8) }
Macro(MacroKinds)
Macros
GlobalAsm
A use of global_asm!.
SyntheticCoroutineBody
A synthetic coroutine body created by the lowering of a coroutine-closure, such as an async closure.
Trait Implementations§
Source§impl<Body: Clone> Clone for FullDefKind<Body>
impl<Body: Clone> Clone for FullDefKind<Body>
Source§fn clone(&self) -> FullDefKind<Body>
fn clone(&self) -> FullDefKind<Body>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<Body: Debug> Debug for FullDefKind<Body>
impl<Body: Debug> Debug for FullDefKind<Body>
Source§impl<'de, Body> Deserialize<'de> for FullDefKind<Body>where
Body: Deserialize<'de>,
impl<'de, Body> Deserialize<'de> for FullDefKind<Body>where
Body: Deserialize<'de>,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<Body: JsonSchema> JsonSchema for FullDefKind<Body>
impl<Body: JsonSchema> JsonSchema for FullDefKind<Body>
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref keyword. Read moreAuto Trait Implementations§
impl<Body> Freeze for FullDefKind<Body>where
Body: Freeze,
impl<Body> RefUnwindSafe for FullDefKind<Body>where
Body: RefUnwindSafe,
impl<Body> Send for FullDefKind<Body>where
Body: Send,
impl<Body> Sync for FullDefKind<Body>where
Body: Sync,
impl<Body> Unpin for FullDefKind<Body>where
Body: Unpin,
impl<Body> UnwindSafe for FullDefKind<Body>where
Body: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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