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})")
}
}