Skip to content

Repository files navigation

attribute-derive

docs.rslib.rsMITDocumentation for main

Basically clap for attribute macros:

use attribute_derive::Attribute;use syn::Type;#[derive(Attribute)]#[attribute(ident = collection)]#[attribute(error(missing_field = "`{field}` was not specified"))]structCollectionAttribute{// Options are optional by default (will be set to None if not specified)authority:Option<String>,name:String,// Any type implementing default can be flagged as default// This will be set to Vec::default() when not specified#[attribute(optional)]views:Vec<Type>,// Booleans can be used without assigning a value, i.e., as a flag.// If omitted they are set to falsesome_flag:bool,}

Will be able to parse an attribute like this:

#[collection(authority="Some String", name = r#"Another string"#, views = [Option,()])]

Limitations

There are some limitations in syntax parsing that will be lifted future releases.

  • literals in top level (meaning something like #[attr(42, 3.14, "hi")]
  • function like arguments (something like #[attr(view(a = "test"))]
  • other syntaxes, maybe something like key: value

Parse methods

There are multiple ways of parsing a struct deriving Attribute.

For helper attributes there is:

For parsing a single TokenStream e.g. for parsing the proc macro input there a two ways:

About

No description, website, or topics provided.

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages