[][src]Macro syn::parse_macro_input

macro_rules! parse_macro_input {
    ($tokenstream:ident as $ty:ty) => { ... };
    ($tokenstream:ident) => { ... };
}

Parse the input TokenStream of a macro, triggering a compile error if the tokens fail to parse.

Refer to the parse module documentation for more details about parsing in Syn.

Intended usage

extern crate proc_macro;

use proc_macro::TokenStream;
use syn::{parse_macro_input, Result};
use syn::parse::{Parse, ParseStream};

struct MyMacroInput {
    /* ... */
}

impl Parse for MyMacroInput {
    fn parse(input: ParseStream) -> Result<Self> {
        /* ... */
#       Ok(MyMacroInput {})
    }
}

# const IGNORE: &str = stringify! {
#[proc_macro]
# };
pub fn my_macro(tokens: TokenStream) -> TokenStream {
    let input = parse_macro_input!(tokens as MyMacroInput);

    /* ... */
#   "".parse().unwrap()
}