pub type Many<T> = Punctuated<T, Empty>;
Expand description
A convenience type alias for parsing several repeated items with no separator in between.
#[derive(PartialEq, Eq, Debug, Parse, ToTokens)]
struct KeyValue {
key: Ident,
arrow: syn::token::RArrow,
value: Lit,
}
let items: Many<KeyValue> = parse_quote!{
key_one -> 678
no_2 -> 2.718
third -> false
};
let actual: Vec<KeyValue> = items.into_iter().collect();
let expected = vec![
KeyValue {
key: Ident::new("key_one", Span::call_site()),
arrow: Default::default(),
value: Lit::Int(LitInt::new("678", Span::call_site())),
},
KeyValue {
key: Ident::new("no_2", Span::call_site()),
arrow: Default::default(),
value: Lit::Float(LitFloat::new("2.718", Span::call_site())),
},
KeyValue {
key: Ident::new("third", Span::call_site()),
arrow: Default::default(),
value: Lit::Bool(LitBool::new(false, Span::call_site())),
},
];
assert_eq!(actual, expected);