有时希望使用属性来注释配对语句的分支,例如条件编译 #[cfg] 或是分支权重(后者为最重要的用途)。

对于条件编译,暂时得解决办法是使用 #[cfg] 来重复宣告相同函式来处理不同的案例。一个案例研究是 sfackler 的 bindings to OpenSSL,在多数的发行版本中移除了 SSLv2 支持,因此 Rust bindings 部分需要被条件禁用。支援各种不同 SSL 版本最显而易见的方法是使用枚举。

然而,所有的 match 只能在 cfg 启用时使用 Sslv2,例如下面内容是无效的:

分支权重将允许仔细的微优化器(micro-optimiser)通知编译器,例如,鲜少采取某个配对分支:

实际上没有通用的替代方案; 人们也许可以用一些宏(macro)和辅助函数来解决条件枚举变体的配对问题; 但一般来说,这起不了任何作用。