Basically clap for attribute macros: ```rust
struct CollectionAttribute {
// Options are optional by default (will be set to None if not specified)
authority: Option
Will be able to parse an attribute like this: ```rust
```
There are some limitations in syntax parsing that will be lifted future releases.
#[attr(42, 3.14, "hi")]
#[attr(view(a = "test"))]
key: value
There are multiple ways of parsing a struct deriving Attribute
.
For helper attributes there is:
- Attribute::from_attributes
which takes in an IntoIterator<Item = &'a
syn::Attribute
(e.g. a &Vec<syn::Attribute>
). Most useful for derive macros.
- Attribute::remove_attributes
which takes an &mut Vec<syn::Attribute>
and does not only parse the Attribute
but also removes those matching. Useful for helper
attributes for proc macros, where the helper attributes need to be removed.
For parsing a single TokenStream
e.g. for parsing the proc macro input there a two ways:
Attribute::from_args
taking in a TokenStream
derive(Attribute)
also derives Parse
so you can use the parse API,
e.g. with parse_macro_input!(tokens as Attribute)
.