在 Rust 中,if 表达式是一种控制流结构,用于基于条件执行代码。与许多其他语言不同,Rust 的 if 可以返回一个值,这使得它非常灵活和强大。

基本语法

Rust 的 if 表达式的基本语法是:if 条件 { 代码块 }。条件必须是布尔类型(bool),否则编译器会报错。下面的示例展示了如何使用 if 表达式检查一个数字是否为正数。

let number = 5;
if number > 0 {
    println!("数字是正数");
}

注意:Rust 的条件不需要用括号括起来,但代码块必须用花括号 {} 包围。

使用 else 和 else if

你可以使用 elseelse if 来处理多个条件;else if可以有多个,而else只能有一个。下面的示例演示了如何根据数字的正负或零来打印不同的消息。

let number = -3;
if number > 0 {
    println!("正数");
} else if number < 0 {
    println!("负数");
} else { // 所有条件不匹配时执行else分支
    println!("零");
}

多个分支中最多只有一个会被执行,执行完一个分支后不会执行其他分支:

let x = 10;

if x > 5 {
    println!("分支A");  // 执行这个
} else if x > 8 {
    println!("分支B");  // ❌ 不会执行(条件虽为 true,但已被互斥)
} else {
    println!("分支C");  // ❌ 不会执行
}

返回值的 if 表达式

Rust 的 if 表达式可以返回一个值,这允许你在赋值中使用它。每个分支必须返回相同类型的值。下面的示例展示了如何使用 if 表达式来分配一个字符串。

let condition = true;
let result = if condition {
    "条件为真"
} else {
    "条件为假"
};
println!("{}", result); // 输出: 条件为真

if作为表达式时,必须要有else分支。

注意:如果 if 表达式的分支返回不同类型,编译器会报错。例如,if true { 1 } else { "two" } 会导致类型不匹配错误。

嵌套 if 表达式

你可以在 if 表达式中嵌套其他 if 表达式,以处理更复杂的逻辑。下面的示例展示了如何检查一个数字是否在特定范围内。

let x = 10;
if x > 0 {
    if x < 20 {
        println!("x 在 0 和 20 之间");
    }
}