Type Definition parsel::ast::Many

source · []
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);