compose-idents 0.3.0

A Rust macro for generating new identifiers (names of variables, functions, traits, etc) by concatenating one or more arbitrary parts and applying other manipulations.
Documentation
use crate::ast::{LoopAlias, LoopSourceValueList, LoopSpecItem};
use crate::util::unique_id::next_unique_id;
use std::rc::Rc;
use syn::parse::{Parse, ParseStream};
use syn::Token;

impl Parse for LoopSpecItem {
    fn parse(input: ParseStream) -> syn::Result<Self> {
        let span = input.span();
        input.parse::<Token![for]>()?;

        let alias = input.parse::<LoopAlias>()?;

        input.parse::<Token![in]>()?;

        let list = input.parse::<LoopSourceValueList>()?;

        Ok(LoopSpecItem::new(
            next_unique_id(),
            Rc::new(alias),
            Rc::new(list),
            span,
        ))
    }
}