8 releases
0.3.0 | Mar 30, 2023 |
---|---|
0.2.3 | Sep 3, 2022 |
0.2.2 | Aug 25, 2022 |
0.2.1 | May 27, 2022 |
0.0.1 | May 11, 2022 |
#893 in Rust patterns
235 downloads per month
Used in 13 crates
(5 directly)
85KB
2K
SLoC
proc-easy
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
- Apache License, Version 2.0, (license/APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (license/MIT or http://opensource.org/licenses/MIT)
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.
Dependencies
~235–680KB
~16K SLoC