1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
use proc_macro::TokenStream; use std::str::FromStr; /// Makes your code nut. #[proc_macro] pub fn nut(input: TokenStream) -> TokenStream { internal_nut(input) } fn internal_nut(code_to_nut: TokenStream) -> TokenStream { let code_to_nut = code_to_nut.to_string(); let replaced: String = code_to_nut .replace("& nut self", "& mut self") .replace("let nut", "let mut"); TokenStream::from_str(&replaced).expect("this code can't nut :pensive:") }