attr_parser_fn/
rest_args.rs1use syn::{
2 parse::{Parse, ParseStream},
3 token::Token,
4 Result,
5};
6
7use crate::with_comma;
8
9pub trait ParseRestArgs: Sized {
10 fn parse(input: ParseStream) -> Result<Self>;
11}
12
13impl ParseRestArgs for () {
14 fn parse(_: ParseStream) -> Result<Self> {
15 Ok(())
16 }
17}
18
19impl<P> ParseRestArgs for Vec<P>
20where
21 P: Parse + Token,
22{
23 fn parse(input: ParseStream) -> Result<Self> {
24 let mut vec = vec![];
25 while let Some(v) = input.parse::<Option<P>>()? {
26 vec.push(v);
27 with_comma(input)?;
28 }
29 Ok(vec)
30 }
31}