此代码来自rustc libsyntax / parse / token.rs:
pub enum SpecialMacroVar {
CrateMacroVar,
}
impl SpecialMacroVar {
pub fn as_str(self) -> &'static str {
match self {
SpecialMacroVar::CrateMacroVar => "crate",
}
}
}
为什么你会这样做而不仅仅是这样呢?
impl SpecialMacroVar {
pub fn as_str(self) -> &'static str {
"crate"
}
}
答案 0 :(得分:3)
也许出于防御性编程的原因?如果以第二种方式完成,该函数将错误地为每个枚举成员返回"crate"
,即使稍后将更多成员添加到枚举但您忘记更新as_str()
以反映该事实。但是,这样编译器就有机会捕获这些错误。