blob: 231b969a86317c522ce954d1541b3201ed58e868 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#[derive(Debug, Default)]
pub struct OptionsAttr
{
pub impl_with_generics:
syn::punctuated::Punctuated<syn::AngleBracketedGenericArguments, syn::Token![,]>,
}
impl syn::parse::Parse for OptionsAttr
{
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self>
{
let params =
input.parse_terminated(|param| param.parse::<syn::Meta>(), syn::Token![,])?;
let mut impl_with_generics = syn::punctuated::Punctuated::new();
for param in params {
let param = param.require_list()?;
if !param.path.is_ident("impl_with_generics") {
return Err(syn::Error::new_spanned(
param,
"Unrecognized attribute parameter",
));
}
impl_with_generics = param.parse_args_with(
syn::punctuated::Punctuated::<
syn::AngleBracketedGenericArguments,
syn::Token![,],
>::parse_terminated,
)?;
}
Ok(Self { impl_with_generics })
}
}
|