■ macro_rules! 매크로를 사용해 재귀 호출 매크로를 만드는 방법을 보여준다.
▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
macro_rules! print_html { () => {()}; ($e : tt) => {print!("{}", $e)}; ($tag : ident [$($inner : tt)*] $($rest : tt)*) => { { print!("<{}>", stringify!($tag)); print_html!($($inner)*); println!("</{}>", stringify!($tag)); print_html!($($rest)*); } }; } fn main() { print_html! ( html [ head[title["test"]] body [ h1["test"] p ["This is test."] ] ] ); } /* <html><head><title>test</title> </head> <body><h1>test</h1> <p>This is test.</p> </body> </html> */ |