E4226

E4226#

编译器诊断名称:constr_any_pattern_scrutinee_not_error

通配构造器模式 Type::_ 正在匹配一个类型并非 Error 的值。

在匹配开放的 Error 类型时,Type::_ 会选择属于某个 suberror 类型的所有构造器。它并不是对一个已经具有该 suberror 类型的值进行普通穷尽匹配的另一种写法。

错误示例#

///|
priv suberror ParseError {
  InvalidSyntax
}

///|
pub fn is_parse_error(error : ParseError) -> Bool {
  match error {
    ParseError::_ => true
  }
}

建议#

请在匹配 Error 时使用 Type::_,并保留最后的 _ 分支来处理其他 suberror 类型。如果被匹配的值已经具有具体的 suberror 类型,请正常列出其构造器。

///|
priv suberror ParseError {
  InvalidSyntax
}

///|
pub fn is_parse_error(error : Error) -> Bool {
  match error {
    ParseError::_ => true
    _ => false
  }
}