Rust初习录(6)Rust的 if 玩法

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 是"表达式",不是"语句"

相关推荐
用户7783366132117 小时前
用 React Hook 封装搜索数据:useSerp 的防抖、缓存与错误处理
python·api
65岁退休Coder11 小时前
LangGraph v1.2.9 节点容错策略 & 流式输出 & 持久化记忆管理
后端·python·langchain
ikun_文13 小时前
Django框架路由Router的使用
python·pycharm·django
IvanCodes14 小时前
Python 基础语法(二):字符串与常用操作
python
昭昭日月明14 小时前
LangChain 生态:从链到代理,开发者需要掌握的三大核心
python·langchain·agent
Csvn14 小时前
🐍 Day 8:面向对象编程
后端·python
程序员天天困14 小时前
向量检索不准怎么办:混合检索与 Rerank 重排序召回优化实战
后端·python·ai编程
alphaTao15 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
苏灿烤鱼15 小时前
当 AI Agent 遇见真实科学环境:深度拆解 Scientific Agent Skills,把"聊天机器人"变成"AI 科学家"
python·开源·agent
张文君15 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python