Rust 的 if 写法看起来简单,但"玩法"其实比 Java / C++ 丰富很多,因为它是 表达式(expression)而不是语句(statement) ,还能和 let / match / Option 等组合出很多高级用法。
下面按我们一起来看
一、基础 if(但已经和 Java 不一样了)
let age = 18;
if age >= 18 {
println!("成年人");
} else {
println!("未成年");
}
二、🔥 Rust 的关键特性:if 是表达式
👉 可以直接返回值!
let age = 18;
let status = if age >= 18 {
"adult"
} else {
"minor"
};
println!("{}", status);
✔ 对比 Java
Java:
String status = age >= 18 ? "adult" : "minor";
Rust:
let status = if age >= 18 { "adult" } else { "minor" };
👉 Rust 没有三目运算符 ?:,用 if 替代
三、if 必须"类型一致"(非常重要)
let x = 5;
let result = if x > 0 {
10
} else {
20
};
❌ 错误写法:
let result = if x > 0 {
10
} else {
"no"
};
👉 Rust 强类型:if 两边必须同类型
四、if + let(简化 Option / Result)
这是 Rust 最经典玩法之一 👇
1)Option 解包
let some_value = Some(10);
if let Some(v) = some_value {
println!("value = {}", v);
}
👉 等价于:
match some_value {
Some(v) => println!("{}", v),
_ => {}
}
2)Result 简化
let res: Result<i32, &str> = Ok(100);
if let Ok(v) = res {
println!("success: {}", v);
}
五、if + else if(链式判断)
let score = 85;
let grade = if score >= 90 {
"A"
} else if score >= 80 {
"B"
} else if score >= 60 {
"C"
} else {
"D"
};
👉 Rust 推荐写法(比 Java 更"表达式化")
六、if 在函数 return 中(非常 Rust)
fn check(age: i32) -> &'static str {
if age >= 18 {
return "adult";
}
"minor"
}
👉 这里 "minor" 是隐式 return(没有分号)
七、if + 块表达式(可以写复杂逻辑)
let result = if {
let x = 5;
x > 3
} {
"big"
} else {
"small"
};
👉 Rust 允许 if 条件是一个表达式块
八、if + loop / break(进阶玩法)
let result = loop {
if true {
break 100;
}
};
👉 loop + if + break = 返回值
九、if let + else(完整控制流)
let opt = Some(5);
if let Some(v) = opt {
println!("value = {}", v);
} else {
println!("none");
}
十、Rust if 的核心思想总结
⭐ Rust if 的本质:
if 是"表达式",不是"语句"