E0012

E0012#

不可达代码。这通常发生在 return 语句后面跟着更多代码的情况。return 语句将立即退出函数,因此它后面的任何代码都不会被执行。

错误示例#

///|
/// Example function showing unreachable code after an early return
fn unreachable_early_return() -> Unit {
  return
  println("Hello, World!") // Warning: Unreachable code
}
///|
// Example function showing unreachable pattern matching
fn unreachable_match_pattern() -> Unit {
  match Some(1) {
    _ => println("_")
    Some(a) => println("Some(\{a})") // Warning: Unreachable code
  }
}

建议#

移除不可达代码,或者如果你希望代码被执行,将其移动到分支语句之后。

///|
fn example_execute_before_return() -> Unit {
  println("Hello World!")
  return
}

你也可以交换模式匹配中分支的顺序。如果分支的顺序很重要,那么你可能希望完善第一个模式,使其排除第二个模式覆盖的内容。

///|
fn example_proper_order() -> Unit {
  match Some(1) {
    Some(a) => println("Some(\{a})")
    _ => println("_")
  }
}

或者,

///|
fn example_specific_pattern() -> Unit {
  match Some(1) {
    None => println("_")
    Some(a) => println("Some(\{a})")
  }
}