## ItemKind

# Enum ItemKind

Source

    pub(crate) enum ItemKind {
    Show 31 variants    ExternCrateItem {
            src: Option<Symbol>,
        },
        ImportItem(Import),
        StructItem(Struct),
        UnionItem(Union),
        EnumItem(Enum),
        FunctionItem(Box<Function>),
        ModuleItem(Module),
        TypeAliasItem(Box<TypeAlias>),
        StaticItem(Static),
        TraitItem(Box<Trait>),
        TraitAliasItem(TraitAlias),
        ImplItem(Box<Impl>),
        RequiredMethodItem(Box<Function>),
        MethodItem(Box<Function>, Option<Defaultness>),
        StructFieldItem(Type),
        VariantItem(Variant),
        ForeignFunctionItem(Box<Function>, Safety),
        ForeignStaticItem(Static, Safety),
        ForeignTypeItem,
        MacroItem(Macro),
        ProcMacroItem(ProcMacro),
        PrimitiveItem(PrimitiveType),
        RequiredAssocConstItem(Generics, Box<Type>),
        ConstantItem(Box<Constant>),
        ProvidedAssocConstItem(Box<Constant>),
        ImplAssocConstItem(Box<Constant>),
        RequiredAssocTypeItem(Generics, Vec<GenericBound>),
        AssocTypeItem(Box<TypeAlias>, Vec<GenericBound>),
        StrippedItem(Box<ItemKind>),
        KeywordItem,
        AttributeItem,
    }

## Variants§

§

### ExternCrateItem

#### Fields

§`src: Option<Symbol>`

The crate’s name, not the name it’s imported as.

§

### ImportItem(Import)

§

### StructItem(Struct)

§

### UnionItem(Union)

§

### EnumItem(Enum)

§

### FunctionItem(Box<Function>)

§

### ModuleItem(Module)

§

### TypeAliasItem(Box<TypeAlias>)

§

### StaticItem(Static)

§

### TraitItem(Box<Trait>)

§

### TraitAliasItem(TraitAlias)

§

### ImplItem(Box<Impl>)

§

### RequiredMethodItem(Box<Function>)

A required method in a trait declaration meaning it’s only a function signature.

§

### MethodItem(Box<Function>, Option<Defaultness>)

A method in a trait impl or a provided method in a trait declaration.

Compared to RequiredMethodItem, it also contains a method body.

§

### StructFieldItem(Type)

§

### VariantItem(Variant)

§

### ForeignFunctionItem(Box<Function>, Safety)

`fn`s from an extern block

§

### ForeignStaticItem(Static, Safety)

`static`s from an extern block

§

### ForeignTypeItem

`type`s from an extern block

§

### MacroItem(Macro)

§

### ProcMacroItem(ProcMacro)

§

### PrimitiveItem(PrimitiveType)

§

### RequiredAssocConstItem(Generics, Box<Type>)

A required associated constant in a trait declaration.

§

### ConstantItem(Box<Constant>)

§

### ProvidedAssocConstItem(Box<Constant>)

An associated constant in a trait declaration with provided default value.

§

### ImplAssocConstItem(Box<Constant>)

An associated constant in an inherent impl or trait impl.

§

### RequiredAssocTypeItem(Generics, Vec<GenericBound>)

A required associated type in a trait declaration.

The bounds may be non-empty if there is a `where` clause.

§

### AssocTypeItem(Box<TypeAlias>, Vec<GenericBound>)

An associated type in a trait impl or a provided one in a trait declaration.

§

### StrippedItem(Box<ItemKind>)

An item that has been stripped by a rustdoc pass

§

### KeywordItem

This item represents a module with a `#[doc(keyword = "...")]` attribute which is used to generate documentation for Rust keywords.

§

### AttributeItem

This item represents a module with a `#[doc(attribute = "...")]` attribute which is used to generate documentation for Rust builtin attributes.

## Implementations§

Source§

### impl ItemKind

Source

#### pub(crate) fn inner_items(&self) -> impl Iterator<Item = &Item>

Some items contain others such as structs (for their fields) and Enums (for their variants). This method returns those contained items.

## Trait Implementations§

Source§

### impl Clone for ItemKind

Source§

#### fn clone(&self) -> ItemKind

Returns a duplicate 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 Debug for ItemKind

Source§

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

Formats the value using the given formatter. Read more

## Auto Trait Implementations§

§

### impl Freeze for ItemKind

§

### impl RefUnwindSafe for ItemKind

§

### impl Send for ItemKind

§

### impl Sync for ItemKind

§

### impl Unpin for ItemKind

§

### impl UnwindSafe for ItemKind

## Blanket Implementations§

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<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, dest: *mut u8)

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

### impl<T> From<T> for T

Source§

#### fn from(t: T) -> T

Returns the argument unchanged.

§

### impl<T> Instrument for T

§

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

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

#### 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> 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.
§

### impl<T> WithSubscriber for T

§

#### 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
§

#### fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default `Subscriber` to this type, returning a [`WithDispatch`] wrapper. 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: 48 bytes

Size for each variant:

- `ExternCrateItem`: 7 bytes
- `ImportItem`: 47 bytes
- `StructItem`: 39 bytes
- `UnionItem`: 47 bytes
- `EnumItem`: 47 bytes
- `FunctionItem`: 15 bytes
- `ModuleItem`: 39 bytes
- `TypeAliasItem`: 15 bytes
- `StaticItem`: 31 bytes
- `TraitItem`: 15 bytes
- `TraitAliasItem`: 47 bytes
- `ImplItem`: 15 bytes
- `RequiredMethodItem`: 15 bytes
- `MethodItem`: 15 bytes
- `StructFieldItem`: 39 bytes
- `VariantItem`: 39 bytes
- `ForeignFunctionItem`: 15 bytes
- `ForeignStaticItem`: 31 bytes
- `ForeignTypeItem`: 0 bytes
- `MacroItem`: 39 bytes
- `ProcMacroItem`: 39 bytes
- `PrimitiveItem`: 1 byte
- `RequiredAssocConstItem`: 31 bytes
- `ConstantItem`: 15 bytes
- `ProvidedAssocConstItem`: 15 bytes
- `ImplAssocConstItem`: 15 bytes
- `RequiredAssocTypeItem`: 47 bytes
- `AssocTypeItem`: 39 bytes
- `StrippedItem`: 15 bytes
- `KeywordItem`: 0 bytes
- `AttributeItem`: 0 bytes