非详尽匹配i32即使它是

Rust 抱怨那场比赛并不详尽。这是 Rust 的限制还是我错过了什么?

fn main() {
  let x = 10;
  match x {
     1 => {},
     y if y < 1 => {},
     y if y > 1 => {}
  }
}

回答

Rustif在验证穷举时不会处理表达式。鉴于此,您要么需要添加一个标记为无法访问的全能匹配,例如

fn main() {
  let x = 10;
  match x {
    1 => {},
    y if y < 1 => {},
    y if y > 1 => {}
    _ => unreachable!()
  }
}

或者根据您的逻辑,更好的选择是根本不包括最后一个if,例如

fn main() {
  let x = 10;
  match x {
    1 => {},
    y if y < 1 => {},
    y => {}
  }
}

因为match如果前一个失败,它只会到达最后一个。

有关的:

  • 为什么带有保护子句的匹配模式不是详尽无遗的?

以上是非详尽匹配i32即使它是的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>