alias_macros 0.1.1

A alias macro for Rust - create alias for everything...!
Documentation
use proc_macro::TokenStream;
use quote::quote;
use proc_macro2::TokenStream as TokenStream2;
use syn::{parse_macro_input, Token, Ident};

struct DefineInput {
    alias: Ident,
    replacement: TokenStream2,
}

impl syn::parse::Parse for DefineInput {
    fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
        let alias: Ident = input.parse()?;
        input.parse::<Token![=]>()?;
        let replacement: TokenStream2 = input.parse()?;
        Ok(DefineInput {alias, replacement})
    }
}

#[proc_macro]
pub fn define(input: TokenStream) -> TokenStream {
    let DefineInput { alias, replacement} =
        parse_macro_input!(input as DefineInput);
    let expand = quote! {
        macro_rules! #alias {
            () => { #replacement };
            ($($tokens:tt)*) => { #replacement $($tokens)* };
        }
    };
    expand.into()
}