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

相关推荐
外收内放几秒前
Python基础语法练习题(75)
开发语言·python·学习
starzy19901 小时前
Scala循环与判断:一切皆表达式的控制流
开发语言·人工智能·scala
starzy19901 小时前
Scala类和对象:从构造器到样例类的完整指南
开发语言·后端·scala
niucloud-admin1 小时前
NIUCLOUD PHP SAAS上门家政使用文档--服务订单:订单列表
开发语言·php
黑十1 小时前
PyTorch 报 “no CUDA GPUs are available“ 怎么办?3 步排查
服务器·网络·人工智能·pytorch·python
怪我冷i2 小时前
Rust 的impl语法详解
开发语言·后端·rust
threelab2 小时前
开源图片去水印代码
python
qq_406981032 小时前
c++的decltype是什么
开发语言·c++
坤坤子吖2 小时前
算法学习——单调队列
开发语言·c++·笔记·学习·算法
我就是全世界2 小时前
OpenCode Go 套餐划算吗:先看你用哪个模型
开发语言·后端·golang