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