use syn::parse::{Error, Parse, ParseStream, Result};
use syn::{LitInt, Path, Token};
pub enum Args {
None,
Path(Path),
PathPos(Path, usize),
}
impl Parse for Args {
fn parse(input: ParseStream) -> Result<Self> {
if input.is_empty() {
return Ok(Args::None);
}
let path: Path = input.parse()?;
if input.is_empty() {
return Ok(Args::Path(path));
}
input.parse::<Token![,]>()?;
let lit: LitInt = input.parse()?;
let pos: usize = lit.base10_parse()?;
if pos > 9999 {
return Err(Error::new(lit.span(), "maximum 9999 is supported"));
}
Ok(Args::PathPos(path, pos))
}
}