Type Definition parsel::ast::Many

source · []
pub type Many<T> = Punctuated<T, NotEof>;
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: 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("key_one"),
        arrow: Default::default(),
        value: Lit::from(678_u128),
    },
    KeyValue {
        key: ident("no_2"),
        arrow: Default::default(),
        value: Lit::try_from(2.718).unwrap(),
    },
    KeyValue {
        key: ident("third"),
        arrow: Default::default(),
        value: Lit::from(false),
    },
];
assert_eq!(actual, expected);