2016-06-30 5 views
1

Ich möchte println! ein Makro-Kennung, (meist für den Test-Makros), aber wenn ich es wie folgt tun:Ein Makro mit Zitaten um eine Metavariable

macro_rules! printname(
(
    $name:ident; 
) => (
    println!("$name"); 
) 

let this_name = "hello"; 

printname!(this_name); 

druckt es nur

$

nennen, und wenn ich tun println!("{}", $name); es von Natürlich ersetzt er in der Variablen this_name und druckt

hallo

Was ich will, es tatsächlich zu tun ist, drucken

this_name

Gibt es eine Möglichkeit, eine Metavariable zu zitieren um seinen Wert zu erhalten?

Antwort

3

Das stringify! Makro sollte funktionieren. Er stellt eine Zeichenfolgendarstellung des übergebenen Arguments als &'static str bereit, die dann direkt an println! übergeben werden kann, um es an stdout zu drucken.

Verwandte Themen