[−][src]Struct syn::Attribute
pub struct Attribute {
pub pound_token: Pound,
pub style: AttrStyle,
pub bracket_token: Bracket,
pub path: Path,
pub tts: TokenStream,
pub is_sugared_doc: bool,
}An attribute like #[repr(transparent)].
This type is available if Syn is built with the "derive" or "full"
feature.
Syntax
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 that have is_sugared_doc set to true, 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 interpret_meta method to try parsing the tokens of an
attribute into the structured representation that is used by convention
across most Rust libraries.
Fields
pound_token: Pound
style: AttrStyle
bracket_token: Bracket
path: Path
tts: TokenStream
is_sugared_doc: bool
Methods
impl Attribute[src]
impl Attributepub fn parse_inner(i: Cursor) -> PResult<Self>[src]
pub fn parse_inner(i: Cursor) -> PResult<Self>pub fn parse_outer(i: Cursor) -> PResult<Self>[src]
pub fn parse_outer(i: Cursor) -> PResult<Self>impl Attribute[src]
impl Attributepub fn interpret_meta(&self) -> Option<Meta>[src]
pub fn interpret_meta(&self) -> Option<Meta>Parses the tokens after the path as a Meta if
possible.
Trait Implementations
impl ToTokens for Attribute[src]
impl ToTokens for Attributefn to_tokens(&self, tokens: &mut TokenStream)[src]
fn to_tokens(&self, tokens: &mut TokenStream)Write self to the given TokenStream. Read more
fn into_token_stream(self) -> TokenStream[src]
fn into_token_stream(self) -> TokenStreamConvert self directly into a TokenStream object. Read more
impl Debug for Attribute[src]
impl Debug for Attributefn fmt(&self, f: &mut Formatter) -> Result[src]
fn fmt(&self, f: &mut Formatter) -> ResultFormats the value using the given formatter. Read more
impl Clone for Attribute[src]
impl Clone for Attributefn clone(&self) -> Attribute[src]
fn clone(&self) -> AttributeReturns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
fn clone_from(&mut self, source: &Self)Performs copy-assignment from source. Read more
impl Eq for Attribute[src]
impl Eq for Attributeimpl PartialEq for Attribute[src]
impl PartialEq for Attributefn eq(&self, other: &Self) -> bool[src]
fn eq(&self, other: &Self) -> boolThis method tests for self and other values to be equal, and is used by ==. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> boolThis method tests for !=.
impl Hash for Attribute[src]
impl Hash for AttributeAuto Trait Implementations
Blanket Implementations
impl<T> Spanned for T where
T: ToTokens, [src]
impl<T> Spanned for T where
T: ToTokens, fn span(&Self) -> Span[src]
fn span(&Self) -> SpanReturns a Span covering the complete contents of this syntax tree node, or [Span::call_site()] if this node is empty. Read more
impl<T> From for T[src]
impl<T> From for Timpl<T, U> Into for T where
U: From<T>, [src]
impl<T, U> Into for T where
U: From<T>, impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, type Owned = T
fn to_owned(&self) -> T[src]
fn to_owned(&self) -> TCreates owned data from borrowed data, usually by cloning. Read more
fn clone_into(&self, target: &mut T)[src]
fn clone_into(&self, target: &mut T)🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T, U> TryFrom for T where
T: From<U>, [src]
impl<T, U> TryFrom for T where
T: From<U>, type Error = !
try_from)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>try_from)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized, [src]
impl<T> Borrow for T where
T: ?Sized, ⓘImportant traits for &'a mut Wfn borrow(&self) -> &T[src]
fn borrow(&self) -> &TImmutably borrows from an owned value. Read more
impl<T> BorrowMut for T where
T: ?Sized, [src]
impl<T> BorrowMut for T where
T: ?Sized, ⓘImportant traits for &'a mut Wfn borrow_mut(&mut self) -> &mut T[src]
fn borrow_mut(&mut self) -> &mut TMutably borrows from an owned value. Read more
impl<T, U> TryInto for T where
U: TryFrom<T>, [src]
impl<T, U> TryInto for T where
U: TryFrom<T>, type Error = <U as TryFrom<T>>::Error
try_from)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>try_from)Performs the conversion.
impl<T> Any for T where
T: 'static + ?Sized, [src]
impl<T> Any for T where
T: 'static + ?Sized, fn get_type_id(&self) -> TypeId[src]
fn get_type_id(&self) -> TypeId🔬 This is a nightly-only experimental API. (get_type_id)
this method will likely be replaced by an associated static
Gets the TypeId of self. Read more
impl<E> SpecializationError for E[src]
impl<E> SpecializationError for Efn not_found<S, T>(trait_name: &'static str, method_name: &'static str) -> E where
T: ?Sized, [src]
fn not_found<S, T>(trait_name: &'static str, method_name: &'static str) -> E where
T: ?Sized, 🔬 This is a nightly-only experimental API. (rustc_private)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?
Create an error for a missing method specialization. Defaults to panicking with type, trait & method names. S is the encoder/decoder state type, T is the type being encoded/decoded, and the arguments are the names of the trait and method that should've been overridden. Read more
impl<T> Erased for T[src]
impl<T> Erased for Timpl<T> Send for T where
T: ?Sized, [src]
impl<T> Send for T where
T: ?Sized, impl<T> Sync for T where
T: ?Sized, [src]
impl<T> Sync for T where
T: ?Sized, impl<T> Erased for T
impl<T> Erased for T