我有一些重複的代碼如何編寫類似匹配武器的宏?
match *x {
A(ref a) => "special",
B(ref a) => "B foo",
C(ref a) => "C foo",
D(ref a) => "D foo",
// ...
}
我想喜歡
macro_rules! generic_fmt {
($T:ident) => {
$T(ref a) => {"$T foo"},
}
}
所以,我可以簡化我的匹配
match *x {
A(ref a) => "special",
generic_fmt!(B),
generic_fmt!(C),
generic_fmt!(D),
// ...
}
什麼是做到這一點的最好辦法宏?我每晚使用rustc 1.19.0。
我如何使用'type_name'?它只給了我'Enum'的類型,而不是單個項目? http://play.integer32.com/?gist=b015089c2a81fe44724eea5c4ce006bc&version=undefined – colinfang
哦'type_name'不工作,因爲我雖然'Enum' ...你可以嘗試https://github.com/mockersf/variant-名字,寫起來很有趣 –