1#![deny(
27 non_upper_case_globals,
28 non_camel_case_types,
29 non_snake_case,
30 unused_mut,
31 unused_imports,
32 missing_docs,
33 dead_code
34)]
35#![allow(clippy::large_enum_variant)]
36
37#[macro_use]
38extern crate quote;
39#[macro_use]
40extern crate syn;
41extern crate proc_macro;
42
43mod attr;
44mod cls;
45mod error;
46mod parsers;
47mod req;
48mod val;
49mod data;
50
51pub use attr::{Attr, ExtractAttr, ParametrizedAttr, SingularAttr};
52pub use cls::{LiteralClass, TypeClass, ValueClass};
53pub use data::{
54 DataInner, DataType, DeriveInner, Element, EnumKind, Field, FieldKind, Fields, Items,
55 NamedField, Scope, Variant, Vis,
56};
57pub use error::Error;
58pub use parsers::{MetaArg, MetaArgList, MetaArgNameValue};
59pub use req::{ArgValueReq, AttrReq, ListReq, ValueReq};
60pub use val::ArgValue;
61
62#[macro_export]
64macro_rules! ident {
65 ($ident:ident) => {
66 ::syn::Ident::new(stringify!($ident), ::proc_macro2::Span::call_site())
67 };
68}
69
70#[macro_export]
72macro_rules! path {
73 ($ident:ident) => {
74 ::syn::Path::from(ident!($ident))
75 };
76}
77
78#[cfg(test)]
79mod test {
80 use proc_macro2::Span;
81 use syn::Ident;
82
83 #[test]
84 fn ident() {
85 assert_eq!(ident!(u8), Ident::new("u8", Span::call_site()));
86 }
87}