E1006#
枚举值从未被读取,从未被构造,或两者都是。
如果枚举值从未被读取,意味着它被定义但从未在模式匹配表达式中析构(
match
、let
、guard let
、循环函数等)。如果枚举值
A
从未被构造,意味着没有A(...)
。如果枚举值未使用,意味着它既没有被构造也没有被读取。
错误示例#
priv enum T {
A // Warning: Variant 'A' is never read
B // Warning: Variant 'B' is never constructed
C // Warning: Variant 'C' is unused
}
fn main {
match T::A {
B => ()
_ => ()
}
}
建议#
如果有一些枚举值从未被读取,而其他枚举值被读取,这意味着你在代码中使用了通配符模式(
_
)。你可以展开通配符模式以包含未使用的枚举值。fn main { match T::A { B => () C => () A => () } }
如果所有枚举值从未被读取,而你需要在当前包之外读取这些枚举值,你可以给枚举定义添加
pub
关键字。注意这将使枚举值的实现对包的用户可见。pub enum T { A B C }
如果你需要在当前包之外构造“从未被构造”的枚举值,你可以给枚举值添加
pub(all)
关键字。pub(all) enum T { A B C }
如果有一些枚举值确实没有用,你可以移除未使用的枚举值。
enum T { A B }