proc_micro 0.1.0

Small conveniences for high-quality macros.
Documentation
# #[allow(dead_code)]
# fn syn_field(input: syn::Field) -> syn::Field {
#     input
# }
#
# #[allow(dead_code)]
# fn field_attributes(input: syn::Field) -> Vec<proc_micro::WithSpan<ParseAttribute>> {
#     proc_micro::parse_attrs(&proc_micro::AttrNamespace("macro_name"), &input.attrs)
#         .to_result()
#         .unwrap()
# }
#
# #[derive(strum::EnumDiscriminants, Debug, PartialEq)]
# #[strum_discriminants(
#     name(KnownAttribute),
#     derive(strum::EnumIter, strum::Display, strum::EnumString, Hash)
# )]
# #[allow(dead_code)]
# enum ParseAttribute {
#     #[allow(non_camel_case_types)]
#     #[allow(dead_code)]
#     rename(String),
#     #[allow(non_camel_case_types)]
#     #[allow(dead_code)]
#     ignore,
# }
#
# impl syn::parse::Parse for ParseAttribute {
#     fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
#         let ident = input.parse::<syn::Ident>()?;
#         match proc_micro::known_attribute(&ident)? {
#             KnownAttribute::rename => {
#                 input.parse::<syn::Token![=]>()?;
#                 Ok(ParseAttribute::rename(
#                     input.parse::<syn::LitStr>()?.value(),
#                 ))
#             }
#             KnownAttribute::ignore => Ok(ParseAttribute::ignore),
#         }
#     }
# }
#