Documentation for foreign, trait, impl items
diff --git a/src/item.rs b/src/item.rs
index f5091d2..5df15a0 100644
--- a/src/item.rs
+++ b/src/item.rs
@@ -317,9 +317,9 @@
}
ast_enum_of_structs! {
- /// An item within an `extern` block
+ /// An item within an `extern` block.
pub enum ForeignItem {
- /// A foreign function
+ /// A foreign function in an `extern` block.
pub Fn(ForeignItemFn {
pub attrs: Vec<Attribute>,
pub vis: Visibility,
@@ -327,7 +327,8 @@
pub decl: Box<FnDecl>,
pub semi_token: Token![;],
}),
- /// A foreign static item (`static ext: u8`)
+
+ /// A foreign static item in an `extern` block: `static ext: u8`.
pub Static(ForeignItemStatic {
pub attrs: Vec<Attribute>,
pub vis: Visibility,
@@ -338,7 +339,8 @@
pub ty: Box<Type>,
pub semi_token: Token![;],
}),
- /// A foreign type
+
+ /// A foreign type in an `extern` block: `type void`.
pub Type(ForeignItemType {
pub attrs: Vec<Attribute>,
pub vis: Visibility,
@@ -346,6 +348,8 @@
pub ident: Ident,
pub semi_token: Token![;],
}),
+
+ /// Tokens in an `extern` block not interpreted by Syn.
pub Verbatim(ForeignItemVerbatim #manual_extra_traits {
pub tts: TokenStream,
}),
@@ -373,11 +377,9 @@
}
ast_enum_of_structs! {
- /// Represents an item declaration within a trait declaration,
- /// possibly including a default implementation. A trait item is
- /// either required (meaning it doesn't have an implementation, just a
- /// signature) or provided (meaning it has a default implementation).
+ /// An item declaration within the definition of a trait.
pub enum TraitItem {
+ /// An associated constant within the definition of a trait.
pub Const(TraitItemConst {
pub attrs: Vec<Attribute>,
pub const_token: Token![const],
@@ -387,12 +389,16 @@
pub default: Option<(Token![=], Expr)>,
pub semi_token: Token![;],
}),
+
+ /// A trait method within the definition of a trait.
pub Method(TraitItemMethod {
pub attrs: Vec<Attribute>,
pub sig: MethodSig,
pub default: Option<Block>,
pub semi_token: Option<Token![;]>,
}),
+
+ /// An associated type within the definition of a trait.
pub Type(TraitItemType {
pub attrs: Vec<Attribute>,
pub type_token: Token![type],
@@ -403,11 +409,15 @@
pub default: Option<(Token![=], Type)>,
pub semi_token: Token![;],
}),
+
+ /// A macro invocation within the definition of a trait.
pub Macro(TraitItemMacro {
pub attrs: Vec<Attribute>,
pub mac: Macro,
pub semi_token: Option<Token![;]>,
}),
+
+ /// Tokens within the definition of a trait not interpreted by Syn.
pub Verbatim(TraitItemVerbatim #manual_extra_traits {
pub tts: TokenStream,
}),
@@ -435,7 +445,9 @@
}
ast_enum_of_structs! {
+ /// An item within an impl block.
pub enum ImplItem {
+ /// An associated constant within an impl block.
pub Const(ImplItemConst {
pub attrs: Vec<Attribute>,
pub vis: Visibility,
@@ -448,6 +460,8 @@
pub expr: Expr,
pub semi_token: Token![;],
}),
+
+ /// A method within an impl block.
pub Method(ImplItemMethod {
pub attrs: Vec<Attribute>,
pub vis: Visibility,
@@ -455,6 +469,8 @@
pub sig: MethodSig,
pub block: Block,
}),
+
+ /// An associated type within an impl block.
pub Type(ImplItemType {
pub attrs: Vec<Attribute>,
pub vis: Visibility,
@@ -466,11 +482,15 @@
pub ty: Type,
pub semi_token: Token![;],
}),
+
+ /// A macro invocation within an impl block.
pub Macro(ImplItemMacro {
pub attrs: Vec<Attribute>,
pub mac: Macro,
pub semi_token: Option<Token![;]>,
}),
+
+ /// Tokens within an impl block not interpreted by Syn.
pub Verbatim(ImplItemVerbatim #manual_extra_traits {
pub tts: TokenStream,
}),
@@ -510,9 +530,7 @@
}
ast_struct! {
- /// Header (not the body) of a function declaration.
- ///
- /// E.g. `fn foo(bar: baz)`
+ /// Header of a function declaration, without including the body.
pub struct FnDecl {
pub fn_token: Token![fn],
pub generics: Generics,