pub struct Item<K = ItemKind> {
pub attrs: AttrVec,
pub id: NodeId,
pub span: Span,
pub vis: Visibility,
pub ident: Ident,
pub kind: K,
pub tokens: Option<LazyAttrTokenStream>,
}
Expand description
An item definition.
Fields§
§attrs: AttrVec
§id: NodeId
§span: Span
§vis: Visibility
§ident: Ident
The name of the item. It might be a dummy name in case of anonymous items.
kind: K
§tokens: Option<LazyAttrTokenStream>
Original tokens this item was parsed from. This isn’t necessarily
available for all items, although over time more and more items should
have this be Some
. Right now this is primarily used for procedural
macros, notably custom attributes.
Note that the tokens here do not include the outer attributes, but will include inner attributes.
Implementations§
source§impl Item
impl Item
sourcepub fn span_with_attributes(&self) -> Span
pub fn span_with_attributes(&self) -> Span
Return the span that encompasses the attributes.
pub fn opt_generics(&self) -> Option<&Generics>
Trait Implementations§
source§impl HasAttrs for Item
impl HasAttrs for Item
source§const SUPPORTS_CUSTOM_INNER_ATTRS: bool = true
const SUPPORTS_CUSTOM_INNER_ATTRS: bool = true
This is
true
if this HasAttrs
might support ‘custom’ (proc-macro) inner
attributes. Attributes like #![cfg]
and #![cfg_attr]
are not
considered ‘custom’ attributes. Read morefn attrs(&self) -> &[Attribute]
fn visit_attrs(&mut self, f: impl FnOnce(&mut AttrVec))
source§impl HasTokens for Item
impl HasTokens for Item
fn tokens(&self) -> Option<&LazyAttrTokenStream>
fn tokens_mut(&mut self) -> Option<&mut Option<LazyAttrTokenStream>>
impl !AstDeref for Item
Auto Trait Implementations§
impl<K> DynSend for Item<K>where
K: DynSend,
impl<K> DynSync for Item<K>where
K: DynSync,
impl<K> Freeze for Item<K>where
K: Freeze,
impl<K = ItemKind> !RefUnwindSafe for Item<K>
impl<K = ItemKind> !Send for Item<K>
impl<K = ItemKind> !Sync for Item<K>
impl<K> Unpin for Item<K>where
K: Unpin,
impl<K = ItemKind> !UnwindSafe for Item<K>
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
Mutably borrows from an owned value. Read more
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)
🔬This is a nightly-only experimental API. (
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>
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 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>
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 moresource§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.