proc-easy

crates docs actions MIT/Apache loc

Macros to make writing proc-macro crates easy.

This crate provides mainly macros and supporting types and traits to reduce amount of boilerplate required for working with [syn].

Currently most of the macros are targeted to construct types that then can be parses to configure proc-macro and proc-derive-macro implementation.

[easy_token!] - defines new custom token from ident. To be used in other structs.

[easy_parse!] - defines struct or enum that can be parsed and peeked from stream.

[easy_argument!] - defines struct with a token as a name and the rest to be parsed as-is.

[easy_argument_group!] - defines a group of arguments as enum of arguments.

[easy_argument_tuple!] - specialized version of [easy_argument!] that parses fields starting from 2nd as [EasyArgumentField]s inside parenthesis and in any order.

[easy_argument_value!] - specialized version of [easy_argument!] for 2 field structs. It defines 2nd field as a value that can be parsed after = token or inside parenthesis.

[easy_separated!] - defines struct that parses fields as [EasyArgumentField]s in any order. Does not accept trailing punctuation.

[easy_terminated!] - defines struct that parses fields as [EasyArgumentField]s in any order. Accepts trailing punctuation. Parses whole stream.

[easy_attributes!] - defines struct that parses fields as [EasyArgumentField]s from a slice of [Attribute]s with specified namespace.

[EasyArgumentField] is implemented for types defined with [easy_token!], [easy_argument!], [easy_argument_tuple!], [easy_argument_value!] and [easy_argument_group!] possibly wrapped in [Option] or [Vec].

License

Licensed under either of

at your option.

Contributions

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.