#proc-macro #macro #derive

proc-easy

Macros to make writing proc-macro crates easy

5 unstable releases

Uses new Rust 2021

0.2.1 May 27, 2022
0.2.0 May 12, 2022
0.1.0 May 11, 2022
0.0.1 May 11, 2022
0.0.0 May 10, 2022

#485 in Rust patterns

Download history 147/week @ 2022-05-10 22/week @ 2022-05-17 40/week @ 2022-05-24 44/week @ 2022-05-31 29/week @ 2022-06-07 29/week @ 2022-06-14

144 downloads per month

MIT/Apache

81KB
1.5K SLoC

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 EasyArgumentFields 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 EasyArgumentFields in any order. Does not accept trailing punctuation.

easy_terminated! - defines struct that parses fields as EasyArgumentFields in any order. Accepts trailing punctuation. Parses whole stream.

easy_attributes! - defines struct that parses fields as EasyArgumentFields from a slice of Attributes 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.

Dependencies

~230–620KB
~15K SLoC