为什么在枚举上使用单个变体来匹配返回静态' STR?

时间:2015-08-29 05:00:28

标签: rust

此代码来自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"
    }
}

1 个答案:

答案 0 :(得分:3)

也许出于防御性编程的原因?如果以第二种方式完成,该函数将错误地为每个枚举成员返回"crate",即使稍后将更多成员添加到枚举但您忘记更新as_str()以反映该事实。但是,这样编译器就有机会捕获这些错误。