2017-11-10 7 views
2

このスニペットは$iを印刷しますが、fooを印刷します。このテーマについていくつかのバリエーションを試してみましたが、このテーマについてはうまくいきませんでしたし、ドキュメントでこの動作について何かを見つけることもできませんでした。これを可能にする構文はありますか?マクロマッチャーを文字列リテラルに補間する

macro_rules! print_ident { 
    ($i:ident) => { 
     println!("$i"); 
    }; 
} 

fn main() { 
    print_ident!(foo); 
} 

答えて

4

Yes

macro_rules! print_ident { 
    ($i:ident) => { 
     println!(stringify!($i)); 
    }; 
} 

fn main() { 
    print_ident!(foo); 
}