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

相关推荐
doiito4 小时前
【Agent Harness】Gliding Horse 设计细节 -- 不跟风开发自己的AI Agent
架构·rust·agent
doiito6 小时前
【Agent Harness】Gliding Horse 核心设计理念,不跟风开发自己的AI Agent
ai·rust·架构设计·系统设计·ai agent
花酒锄作田15 小时前
Pydantic校验配置文件
python
hboot15 小时前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
花褪残红青杏小16 小时前
Rust图像处理第6节- 均值模糊 & 中值模糊:3×3 邻域的两种经典玩法
rust·webassembly·图形学
子兮曰20 小时前
前端工具链的「Rust 化」:一场没有赢家的军备竞赛?
前端·后端·rust
星栈1 天前
写 Dioxus Demo 不难,难的是把它写成项目
前端·rust·前端框架
mCell1 天前
【锐评】桌面端技术营销:别拿跑分当工程判断
前端·rust·electron
ZhengEnCi1 天前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi1 天前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab