Crates.io | proc-easy |
lib.rs | proc-easy |
version | 0.3.0 |
source | src |
created_at | 2022-05-10 09:50:23.612826 |
updated_at | 2023-03-30 07:46:38.578577 |
description | Macros to make writing proc-macro crates easy |
homepage | https://github.com/zakarumych/proc-easy |
repository | https://github.com/zakarumych/proc-easy |
max_upload_size | |
id | 583876 |
size | 91,725 |
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
.
Licensed under either of
at your option.
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.