跳到主要内容

UnreachableCode

等级:提示

此处的代码不可达。

编译器会检查跳转后的代码、所有可达分支均终止的控制流、没有可达出口的循环,以及布尔字面量和逻辑组合确定不会执行的分支。无守卫或守卫恒真的兜底 case 后,其他分支也不可达。

如何修复​

删除不可达代码,或调整跳转、条件和分支顺序,使代码能够执行。

修改前​

fn example() {
  return 1;
  debug_print("unreachable");
}

match value {
  case _ { "fallback" }
  case 1 { "one" }
} 

修复后​

fn example() {
  debug_print("reachable");
  1
}

match value {
  case 1 { "one" }
  case _ { "fallback" }
} 

分析不会追踪变量值或被调用函数的行为;带未知守卫的 case _ if condition 不会使后续分支不可达。函数声明会提升,因此位于跳转后的函数声明本身不会被此诊断标记。