4 releases
0.2.1 | May 25, 2020 |
---|---|
0.2.0 | Aug 24, 2019 |
0.1.1 | Feb 7, 2019 |
0.1.0 | Feb 6, 2019 |
#205 in Parser tooling
50,878 downloads per month
Used in 8 crates
(2 directly)
12KB
130 lines
Synattra
A Syn Attribute Parser Toolkit
Synattra extends Syn and provides structures to easily parse custom attributes.
Notably, Synattra provides a KVOption<K, V>
type that allows parsing attributes in the form key = value
where key
can be any token or custom keyword (including Rust keywords!) and value any type that can be parsed from a TokenStream
. Synattra was extracted from the Metered project which needed expressing type paths as option values (e.g path::to::GenericType<u32>
), which was not supported by existing attribute parsing systems (neither Syn's own Meta
parsing facility or alternate crates such as prom-attire-rs).
Synattra also supports single or multiple values, that can take the shape of Foo
or [Foo, Bar]
.
Finally Synattra provides some extra types, such as InvokePath
which represents any invocation handle, macro or not (e.g foo
or println!
).
By reusing Syn's design, Synattra parsers are very robust and when they compile, they usually work :-).
Changelog
- 0.2.0:
- Updated dependencies to use
syn
,proc-macro2
andquote
1.0
- Updated dependencies to use
Required Rust version
Synattra runs on Rust
stable.
Design
Synattra is using Syn's design for attribute parsing. You can see it in use in the Metered project.
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.
Contribution
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
~1.5MB
~36K SLoC