# Enum syn::Item

source · [−]

    #[non_exhaustive]
    pub enum Item {
    Show 17 variants    Const(ItemConst),
        Enum(ItemEnum),
        ExternCrate(ItemExternCrate),
        Fn(ItemFn),
        ForeignMod(ItemForeignMod),
        Impl(ItemImpl),
        Macro(ItemMacro),
        Macro2(ItemMacro2),
        Mod(ItemMod),
        Static(ItemStatic),
        Struct(ItemStruct),
        Trait(ItemTrait),
        TraitAlias(ItemTraitAlias),
        Type(ItemType),
        Union(ItemUnion),
        Use(ItemUse),
        Verbatim(TokenStream),
    }

Expand description

Things that can appear directly inside of a module or scope.

This type is available only if Syn is built with the `"full"` feature.

## Syntax tree enum

This type is a syntax tree enum.

## Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.

### `Const(ItemConst)`

A constant item: `const MAX: u16 = 65535`.

### `Enum(ItemEnum)`

An enum definition: `enum Foo<A, B> { A(A), B(B) }`.

### `ExternCrate(ItemExternCrate)`

An `extern crate` item: `extern crate serde`.

### `Fn(ItemFn)`

A free-standing function: `fn process(n: usize) -> Result<()> { ... }`.

### `ForeignMod(ItemForeignMod)`

A block of foreign items: `extern "C" { ... }`.

### `Impl(ItemImpl)`

An impl block providing trait or associated items: `impl<A> Trait for Data<A> { ... }`.

### `Macro(ItemMacro)`

A macro invocation, which includes `macro_rules!` definitions.

### `Macro2(ItemMacro2)`

A 2.0-style declarative macro introduced by the `macro` keyword.

### `Mod(ItemMod)`

A module or module declaration: `mod m` or `mod m { ... }`.

### `Static(ItemStatic)`

A static item: `static BIKE: Shed = Shed(42)`.

### `Struct(ItemStruct)`

A struct definition: `struct Foo<A> { x: A }`.

### `Trait(ItemTrait)`

A trait definition: `pub trait Iterator { ... }`.

### `TraitAlias(ItemTraitAlias)`

A trait alias: `pub trait SharableIterator = Iterator + Sync`.

### `Type(ItemType)`

A type alias: `type Result<T> = std::result::Result<T, MyError>`.

### `Union(ItemUnion)`

A union definition: `union Foo<A, B> { x: A, y: B }`.

### `Use(ItemUse)`

A use declaration: `use std::collections::HashMap`.

### `Verbatim(TokenStream)`

Tokens forming an item not interpreted by Syn.

## Trait Implementations

source

### impl Clone for Item

source

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

Returns a copy 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 From<DeriveInput> for Item

source

#### fn from(input: DeriveInput) -> Item

Converts to this type from the input type.

source

### impl From<ItemConst> for Item

source

#### fn from(e: ItemConst) -> Item

Converts to this type from the input type.

source

### impl From<ItemEnum> for Item

source

#### fn from(e: ItemEnum) -> Item

Converts to this type from the input type.

source

### impl From<ItemExternCrate> for Item

source

#### fn from(e: ItemExternCrate) -> Item

Converts to this type from the input type.

source

### impl From<ItemFn> for Item

source

#### fn from(e: ItemFn) -> Item

Converts to this type from the input type.

source

### impl From<ItemForeignMod> for Item

source

#### fn from(e: ItemForeignMod) -> Item

Converts to this type from the input type.

source

### impl From<ItemImpl> for Item

source

#### fn from(e: ItemImpl) -> Item

Converts to this type from the input type.

source

### impl From<ItemMacro> for Item

source

#### fn from(e: ItemMacro) -> Item

Converts to this type from the input type.

source

### impl From<ItemMacro2> for Item

source

#### fn from(e: ItemMacro2) -> Item

Converts to this type from the input type.

source

### impl From<ItemMod> for Item

source

#### fn from(e: ItemMod) -> Item

Converts to this type from the input type.

source

### impl From<ItemStatic> for Item

source

#### fn from(e: ItemStatic) -> Item

Converts to this type from the input type.

source

### impl From<ItemStruct> for Item

source

#### fn from(e: ItemStruct) -> Item

Converts to this type from the input type.

source

### impl From<ItemTrait> for Item

source

#### fn from(e: ItemTrait) -> Item

Converts to this type from the input type.

source

### impl From<ItemTraitAlias> for Item

source

#### fn from(e: ItemTraitAlias) -> Item

Converts to this type from the input type.

source

### impl From<ItemType> for Item

source

#### fn from(e: ItemType) -> Item

Converts to this type from the input type.

source

### impl From<ItemUnion> for Item

source

#### fn from(e: ItemUnion) -> Item

Converts to this type from the input type.

source

### impl From<ItemUse> for Item

source

#### fn from(e: ItemUse) -> Item

Converts to this type from the input type.

source

### impl Parse for Item

source

#### fn parse(input: ParseStream<'_>) -> Result<Self>

source

### impl ToTokens for Item

source

#### fn to_tokens(&self, tokens: &mut TokenStream)

Write `self` to the given `TokenStream`. Read more

source

#### fn to_token_stream(&self) -> TokenStream

Convert `self` directly into a `TokenStream` object. Read more

source

#### fn into_token_stream(self) -> TokenStream

Convert `self` directly into a `TokenStream` object. Read more

## Auto Trait Implementations

### impl RefUnwindSafe for Item

### impl !Send for Item

### impl !Sync for Item

### impl Unpin for Item

### impl UnwindSafe for Item

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

const: unstable · source

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

source

### impl<T> BorrowMut<T> for T where
T: ?Sized,

const: unstable · source

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more

source

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

const: unstable · source

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

Returns the argument unchanged.

source

### impl<T, U> Into<U> for T where
U: From<T>,

const: unstable · 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> Spanned for T where
T: Spanned + ?Sized,

source

#### fn span(&self) -> Span

Returns a `Span` covering the complete contents of this syntax tree node, or `Span::call_site()` if this node is empty. Read more

source

### impl<T> ToOwned for T where
T: Clone,

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

#### type Error = Infallible

The type returned in the event of a conversion error.

const: unstable · 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>,

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

const: unstable · source

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.