模式匹配比 Rust 中的 if/else 更快吗?

Wee*_*ezy 6 rust

假设你有一个枚举

enum Expr {
 binExp, unExp, Literal, Group 
}
Run Code Online (Sandbox Code Playgroud)

并且您想调用 上的方法Expr

你会宁愿 :

match Expr { 
 Expr::binExp  => todo!(),
 Expr::unExp   => todo!(),
 Expr::Literal => todo!(),
 Expr::Group   => todo!()
}
Run Code Online (Sandbox Code Playgroud)

或者

if let Expression::binExp = self {
  todo!()
} else if let Expression::unExp = self {
  todo!()
} else if let Expression::Lit = self {
  todo!()
} else if let Expression::Group(e) = self {
  todo!()
} else {
  todo!()
}
Run Code Online (Sandbox Code Playgroud)

换句话说,是match并行操作吗?我知道if/else将按顺序遍历每个表达式,在遇到错误时对其进行评估,最后停止。

match 语句是模仿这种行为还是直接跳转到正确的模式?我特别问这个问题是因为match可以匹配多个模式,但始终选择首先匹配的模式。因此,match在这方面听起来确实可能是连续的。