pub enum ItemKind<'hir> {
Show 17 variants
ExternCrate(Option<Symbol>),
Use(&'hir Path<'hir>, UseKind),
Static(&'hir Ty<'hir>, Mutability, BodyId),
Const(&'hir Ty<'hir>, BodyId),
Fn(FnSig<'hir>, Generics<'hir>, BodyId),
Macro(MacroDef),
Mod(Mod<'hir>),
ForeignMod {
abi: Abi,
items: &'hir [ForeignItemRef],
},
GlobalAsm(&'hir InlineAsm<'hir>),
TyAlias(&'hir Ty<'hir>, Generics<'hir>),
OpaqueTy(OpaqueTy<'hir>),
Enum(EnumDef<'hir>, Generics<'hir>),
Struct(VariantData<'hir>, Generics<'hir>),
Union(VariantData<'hir>, Generics<'hir>),
Trait(IsAuto, Unsafety, Generics<'hir>, GenericBounds<'hir>, &'hir [TraitItemRef]),
TraitAlias(Generics<'hir>, GenericBounds<'hir>),
Impl(Impl<'hir>),
}Variants
ExternCrate(Option<Symbol>)
An extern crate item, with optional original crate name if the crate was renamed.
E.g., extern crate foo or extern crate foo_bar as foo.
Use(&'hir Path<'hir>, UseKind)
use foo::bar::*; or use foo::bar::baz as quux;
or just
use foo::bar::baz; (with as baz implicitly on the right).
Static(&'hir Ty<'hir>, Mutability, BodyId)
A static item.
Const(&'hir Ty<'hir>, BodyId)
A const item.
Fn(FnSig<'hir>, Generics<'hir>, BodyId)
A function declaration.
Macro(MacroDef)
A MBE macro definition (macro_rules! or macro).
Mod(Mod<'hir>)
A module.
ForeignMod
An external module, e.g. extern { .. }.
GlobalAsm(&'hir InlineAsm<'hir>)
Module-level inline assembly (from global_asm!).
TyAlias(&'hir Ty<'hir>, Generics<'hir>)
A type alias, e.g., type Foo = Bar<u8>.
OpaqueTy(OpaqueTy<'hir>)
An opaque impl Trait type alias, e.g., type Foo = impl Bar;.
Enum(EnumDef<'hir>, Generics<'hir>)
An enum definition, e.g., enum Foo<A, B> {C<A>, D<B>}.
Struct(VariantData<'hir>, Generics<'hir>)
A struct definition, e.g., struct Foo<A> {x: A}.
Union(VariantData<'hir>, Generics<'hir>)
A union definition, e.g., union Foo<A, B> {x: A, y: B}.
Trait(IsAuto, Unsafety, Generics<'hir>, GenericBounds<'hir>, &'hir [TraitItemRef])
A trait definition.
TraitAlias(Generics<'hir>, GenericBounds<'hir>)
A trait alias.
Impl(Impl<'hir>)
An implementation, e.g., impl<A> Trait for Foo { .. }.
Implementations
Trait Implementations
sourceimpl<'hir, __CTX> HashStable<__CTX> for ItemKind<'hir> where
__CTX: HashStableContext,
impl<'hir, __CTX> HashStable<__CTX> for ItemKind<'hir> where
__CTX: HashStableContext,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
Auto Trait Implementations
impl<'hir> !RefUnwindSafe for ItemKind<'hir>
impl<'hir> !Send for ItemKind<'hir>
impl<'hir> !Sync for ItemKind<'hir>
impl<'hir> Unpin for ItemKind<'hir>
impl<'hir> !UnwindSafe for ItemKind<'hir>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
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: 128 bytes
Size for each variant:
ExternCrate: 7 bytesUse: 15 bytesStatic: 23 bytesConst: 23 bytesFn: 87 bytesMacro: 23 bytesMod: 31 bytesForeignMod: 23 bytesGlobalAsm: 15 bytesTyAlias: 63 bytesOpaqueTy: 79 bytesEnum: 71 bytesStruct: 87 bytesUnion: 87 bytesTrait: 87 bytesTraitAlias: 71 bytesImpl: 127 bytes