Rust match 控制流运算符

发布时间: 更新时间: 总字数:351 阅读时间:1m 作者: IP上海 分享 网址

Rust中使用match关键字表示控制流运算符,它允许一个值与一系列模式进行匹配,并执行匹配模式对应的代码。其中,模式可以是字面值、变量名、通配符等。

介绍

定义

match 表达式 {
    模式1 => ...,
    模式2 => {
      ...
    },
}

说明:

  • match 会根据表达式的值,与下面的模式依次匹配
  • match 必须穷举所有的可能,否则报 non-exhaustive patterns: x not covered
  • 可以使用 _ 通配符代替其余没有列举的可能,如 _ = (),
  • 绑定值的模式

match 匹配的分支可以绑定到被匹配对象的部分值,因此可以从 enum 变体中提取值

  • 匹配 Option

示例

fn main() {
  let five = Some(5);
  plus_one(five);

  let none: Option<i32> = None;
  plus_one(none);
}

fn plus_one(x: Option<i32>) -> Option<i32> {
  match x {
      None => None,
      Some(i) => Some(i+1),
  }
}

if let

  • if let 只处理一种匹配,而忽略其它匹配的情况
  • 更少的代码、更少的缩进、更少的模代码
  • 不考虑穷举
  • if letmatch 一种匹配的缩写形式

示例:

fn main() {
  let five = Some(5);
  plus_one(five);

  // if let
  if let Some(5) = five {
      println!("match 5.");
  } else {
      println!("none.")
  }
}

fn plus_one(x: Option<i32>) {
  match x {
      Some(5) => println!("match 5."),
      // _ => (),
      _ => println!("none."),
  }
}
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数