首页 > 解决方案 > Rust 中 if 和 if-let 的主要区别

问题描述

我看不出我们为什么使用if let和只是通常的原因if。在 Rust 书,第 6.3 章中,示例代码如下:

let some_u8_value = Some(0u8);
if let Some(3) = some_u8_value {
    println!("three");
}

上面的代码与以下代码相同:

let some_u8_value = Some(0u8);
if Some(3) == some_u8_value {
    println!("three");
}

关于我们为什么要使用if let或它专门用于什么的任何其他原因?

标签: rust

解决方案


另一个原因是如果您希望使用模式绑定。例如考虑一个枚举:

enum Choices {
  A,
  B,
  C(i32),
}

如果您希望为 的C变体实现特定逻辑Choices,可以使用 if-let 表达式:

let choices: Choices = ...;

if let Choices::C(value) = choices {
    println!("{}", value * 2);
}

推荐阅读