rust - 非穷举匹配 i32 即使它是

标签 rust

Rust 提示那场比赛是非详尽的。这是 Rust 的限制还是我错过了什么?

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

最佳答案

Rust 在验证穷尽性时不会处理 if 表达式。鉴于此,您需要添加一个您标记为无法访问的包罗万象的匹配项,例如

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 => {}
  }
}

因为它只会到达最后一个匹配,如果前面的匹配失败的话。

相关:

关于rust - 非穷举匹配 i32 即使它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67855118/

相关文章:

rust - 动态生成具有拍手格式说明的子命令

rust - 在 Rust 中有没有办法将静态变量包含到其他文件中?

macos - Rust、OpenSSL、solana-test-validator 库未加载问题

arrays - 为什么在具有 240 个或更多元素的数组上循环时会产生很大的性能影响?

rust - 如何在函数中使用递归关联类型?

rust - 整个Box都可以 move 时,Box可以 move 其内容吗?

json - Rust基于json中的枚举反序列化json

logging - 有没有办法以编程方式更改日志箱的默认日志记录级别?

rust - 如何从 Rust 中的 &T 生成 Rc<T> ?

if-statement - 如何将使用三元运算符的 C++ 代码移植到 Rust?