71 lines
1.5 KiB
Rust
71 lines
1.5 KiB
Rust
use proc_macro::TokenStream;
|
|
|
|
#[proc_macro]
|
|
pub fn hello_world(_item: TokenStream) -> TokenStream {
|
|
"println!(\"Hello, World\")".parse().unwrap()
|
|
}
|
|
|
|
// #[proc_macro]
|
|
// pub fn make_answer(_item: TokenStream) -> TokenStream {
|
|
// "fn answer() -> u32 { 42 }".parse().unwrap()
|
|
// }
|
|
|
|
// use quote::quote;
|
|
//
|
|
// #[proc_macro]
|
|
// pub fn make_answer_quote(_item: TokenStream) -> TokenStream {
|
|
// let value: u32 = 43;
|
|
//
|
|
// quote! {
|
|
// fn answer_quote() -> u32 {
|
|
// #value
|
|
// }
|
|
// }
|
|
// .into()
|
|
// }
|
|
|
|
// use quote::ToTokens;
|
|
// use syn::{
|
|
// Error, LitInt, Token,
|
|
// parse::{Parse, ParseStream},
|
|
// parse_macro_input,
|
|
// };
|
|
//
|
|
// struct Custom {
|
|
// value: LitInt,
|
|
// }
|
|
//
|
|
// impl Parse for Custom {
|
|
// // answer = <value>
|
|
// fn parse(input: ParseStream) -> syn::Result<Self> {
|
|
// let ident: syn::Ident = input.parse()?;
|
|
// if ident != "answer" {
|
|
// return Err(Error::new(ident.span(), "expected 'answer'"));
|
|
// }
|
|
//
|
|
// input.parse::<Token![=]>()?;
|
|
//
|
|
// let value = input.parse()?;
|
|
//
|
|
// Ok(Custom { value })
|
|
// }
|
|
// }
|
|
//
|
|
// impl ToTokens for Custom {
|
|
// fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
|
|
// self.value.to_tokens(tokens);
|
|
// }
|
|
// }
|
|
//
|
|
// #[proc_macro]
|
|
// pub fn make_answer_custom(input: TokenStream) -> TokenStream {
|
|
// let custom = parse_macro_input!(input as Custom);
|
|
//
|
|
// quote! {
|
|
// fn answer_custom() -> u32 {
|
|
// #custom
|
|
// }
|
|
// }
|
|
// .into()
|
|
// }
|