E0090

E0090#

警告名称:unused_lexcase

lexmatchlexscan 的某个分支永远无法被选中。

当较早的分支对后续分支能匹配的每个输入都具有优先权,或该分支的正则无法匹配任何输入时,就会出现此警告。在穷尽的正则分支之后出现不必要的兜底分支,也会产生同一警告。

错误示例#

///|
pub fn classify(text : String) -> String {
  lexmatch text {
    re"^a.*$" => "starts with a"
    re"^ab.*$" => "starts with ab"
    _ => "other"
  }
}

第一个分支已经处理所有以 "ab" 开头的字符串,因此在首次匹配语义下,第二个分支不可达。

建议#

删除不可达分支,或将更具体的正则移到遮蔽它的分支之前。

///|
pub fn classify(text : String) -> String {
  lexmatch text {
    re"^ab.*$" => "starts with ab"
    re"^a.*$" => "starts with a"
    _ => "other"
  }
}