An attribute like #[repr(transparent)].
This type is available if Syn is built with the "derive" or "full"
feature.
Rust has six types of attributes.
- Outer attributes like
#[repr(transparent)]. These appear outside or
in front of the item they describe.
- Inner attributes like
#![feature(proc_macro)]. These appear inside
of the item they describe, usually a module.
- Outer doc comments like
/// # Example.
- Inner doc comments like
//! Please file an issue.
- Outer block comments
/** # Example */.
- Inner block comments
/*! Please file an issue */.
The style field of type AttrStyle distinguishes whether an attribute
is outer or inner. Doc comments and block comments are promoted to
attributes, as this is how they are processed by the compiler and by
macro_rules! macros.
The path field gives the possibly colon-delimited path against which
the attribute is resolved. It is equal to "doc" for desugared doc
comments. The tts field contains the rest of the attribute body as
tokens.
#[derive(Copy)] #[crate::precondition x < 5]
^^^^^^~~~~~~ ^^^^^^^^^^^^^^^^^^^ ~~~~~
path tts path tts
Use the parse_meta method to try parsing the tokens of an attribute
into the structured representation that is used by convention across
most Rust libraries.
This type does not implement the Parse trait and thus cannot be
parsed directly by ParseStream::parse. Instead use
ParseStream::call with one of the two parser functions
Attribute::parse_outer or Attribute::parse_inner depending on
which you intend to parse.
#[macro_use]
extern crate syn;
use syn::{Attribute, Ident};
use syn::parse::{Parse, ParseStream, Result};
struct UnitStruct {
attrs: Vec<Attribute>,
struct_token: Token![struct],
name: Ident,
semi_token: Token![;],
}
impl Parse for UnitStruct {
fn parse(input: ParseStream) -> Result<Self> {
Ok(UnitStruct {
attrs: input.call(Attribute::parse_outer)?,
struct_token: input.parse()?,
name: input.parse()?,
semi_token: input.parse()?,
})
}
}
Parses the tokens after the path as a Meta if
possible.
Parses zero or more outer attributes from the stream.
This function is available if Syn is built with the "parsing"
feature.
Parses zero or more inner attributes from the stream.
This function is available if Syn is built with the "parsing"
feature.
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=.
Performs copy-assignment from source. Read more
Feeds this value into the given [Hasher]. Read more
Feeds a slice of this type into the given [Hasher]. Read more
Formats the value using the given formatter. Read more
Write self to the given TokenStream. Read more
Convert self directly into a TokenStream object. Read more
Returns a Span covering the complete contents of this syntax tree node, or [Span::call_site()] if this node is empty. Read more
Creates owned data from borrowed data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (try_from)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id)
this method will likely be replaced by an associated static
Mutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (try_from)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from)