#![warn(
missing_docs,
unused_import_braces,
clippy::pedantic,
missing_debug_implementations
)]
pub extern crate self as easy_proc;
use proc_macro2::Ident;
pub use proc_macro_error2;
use syn::Attribute;
pub use easy_proc_common::{find_attr, find_attrs};
pub use easy_proc_derive::ArgumentList;
pub trait ArgumentList: Sized {
fn parse_arguments(attr: &Attribute) -> Self;
}
pub fn parse_attribute_list<'a, T, I>(ident: &'a Ident, attrs: I) -> impl Iterator<Item = T> + 'a
where
T: 'a + ArgumentList,
I: IntoIterator<Item = &'a Attribute> + 'a,
{
attrs
.into_iter()
.filter(move |attr| attr.path().is_ident(ident))
.map(T::parse_arguments)
}