pub enum FullDefKind<Body> {
Show 32 variants
Struct {
generics: TyGenerics,
predicates: GenericPredicates,
def: AdtDef,
},
Union {
generics: TyGenerics,
predicates: GenericPredicates,
def: AdtDef,
},
Enum {
generics: TyGenerics,
predicates: GenericPredicates,
def: AdtDef,
},
TyAlias {
generics: TyGenerics,
predicates: GenericPredicates,
ty: Option<Ty>,
},
ForeignTy,
AssocTy {
parent: DefId,
generics: TyGenerics,
predicates: GenericPredicates,
associated_item: AssocItem,
value: Option<Ty>,
},
OpaqueTy,
Trait {
generics: TyGenerics,
predicates: GenericPredicates,
self_predicate: TraitPredicate,
items: Vec<(AssocItem, Arc<FullDef<Body>>)>,
},
TraitAlias,
TraitImpl {
generics: TyGenerics,
predicates: GenericPredicates,
trait_pred: TraitPredicate,
required_impl_exprs: Vec<ImplExpr>,
items: Vec<ImplAssocItem<Body>>,
},
InherentImpl {
generics: TyGenerics,
predicates: GenericPredicates,
ty: Ty,
items: Vec<(AssocItem, Arc<FullDef<Body>>)>,
},
Fn {
generics: TyGenerics,
predicates: GenericPredicates,
inline: InlineAttr,
is_const: bool,
sig: PolyFnSig,
body: Option<Body>,
},
AssocFn {
parent: DefId,
associated_item: AssocItem,
generics: TyGenerics,
predicates: GenericPredicates,
inline: InlineAttr,
is_const: bool,
sig: PolyFnSig,
body: Option<Body>,
},
Closure {
parent: DefId,
is_const: bool,
args: ClosureArgs,
},
Const {
generics: TyGenerics,
predicates: GenericPredicates,
ty: Ty,
body: Option<Body>,
},
AssocConst {
parent: DefId,
associated_item: AssocItem,
generics: TyGenerics,
predicates: GenericPredicates,
ty: Ty,
body: Option<Body>,
},
AnonConst,
InlineConst,
Static {
safety: Safety,
mutability: Mutability,
nested: bool,
generics: TyGenerics,
predicates: GenericPredicates,
ty: Ty,
body: Option<Body>,
},
ExternCrate,
Use,
Mod {
items: Vec<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(MacroKind),
GlobalAsm,
SyntheticCoroutineBody,
}
Expand description
Imbues rustc_hir::def::DefKind
with a lot of extra information.
Important: the owner_id()
must be the id of this definition.
Variants§
Struct
Refers to the struct definition, [DefKind::Ctor
] refers to its constructor if it exists.
Union
Enum
TyAlias
Type alias: type Foo = Bar;
ForeignTy
Type from an extern
block.
AssocTy
Associated type: trait MyTrait { type Assoc; }
OpaqueTy
Opaque type, aka impl Trait
.
Trait
Fields
generics: TyGenerics
predicates: GenericPredicates
self_predicate: TraitPredicate
The special Self: Trait
clause.
TraitAlias
Trait alias: trait IntIterator = Iterator<Item = i32>;
TraitImpl
Fields
generics: TyGenerics
predicates: GenericPredicates
trait_pred: TraitPredicate
The trait that is implemented by this impl block.
required_impl_exprs: Vec<ImplExpr>
The ImplExpr
s 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<Body>>
Associated items, in the order of the trait declaration. Includes defaulted items.
InherentImpl
Fn
AssocFn
Associated function: impl MyStruct { fn associated() {} }
or trait Foo { fn associated() {} }
Closure
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
parent: DefId
The enclosing item. Note: this item could itself be a closure; to get the generics, you might have to recurse through several layers of parents until you find a function or constant.
args: ClosureArgs
Const
AssocConst
Associated constant: trait MyTrait { const ASSOC: usize; }
AnonConst
Anonymous constant, e.g. the 1 + 2
in [u8; 1 + 2]
InlineConst
An inline constant, e.g. const { 1 + 2 }
Static
Fields
mutability: Mutability
Whether it’s a static mut
or just a static
.
generics: TyGenerics
predicates: GenericPredicates
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: VariantIdx
Field
A field in a struct, enum or union. e.g.
bar
instruct Foo { bar: u8 }
Foo::Bar::0
inenum Foo { Bar(u8) }
Macro(MacroKind)
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(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read moresource§impl<'tcx, Body, S: UnderOwnerState<'tcx>> SInto<S, FullDefKind<Body>> for DefKindwhere
Body: IsBody + TypeMappable,
impl<'tcx, Body, S: UnderOwnerState<'tcx>> SInto<S, FullDefKind<Body>> for DefKindwhere
Body: IsBody + TypeMappable,
fn sinto(&self, s: &S) -> FullDefKind<Body>
Auto 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>
impl<Body> Sync for FullDefKind<Body>
impl<Body> Unpin for FullDefKind<Body>where
Body: Unpin,
impl<Body> UnwindSafe for FullDefKind<Body>where
Body: UnwindSafe + RefUnwindSafe,
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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