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

相关推荐
计算机编程指导师9 分钟前
Python大数据毕设怎么做?基于Hadoop+Spark的高频电力消耗数据可视化与分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·电力
‎ദ്ദിᵔ.˛.ᵔ₎13 分钟前
c++11:fuction包装器
开发语言·c++
kimnoic16 分钟前
Python 爬虫的原理
开发语言·python
Fluxproxy20 分钟前
Python爬虫异步提速终极方案|线程池ThreadPoolExecutor实战,告别单线程慢速爬取
开发语言·爬虫·python
蜗牛互联网20 分钟前
Java标准HTTP调用多模态模型的票据抽取前置校验
java·人工智能·python·http
用户0190275816130 分钟前
AlphaFeed K 线的 OHLCV 字段怎么理解?(含单位)
python
淡海水33 分钟前
02-07-原理篇-GC暂停时间的本质
开发语言·unity·c#·gc·暂停时间
高级程序源35 分钟前
SSM仓储管理系统31582-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·flask·课程设计
工具派36 分钟前
Agent 不是玄学:用 Java 状态机思维理解 LangGraph
java·人工智能·python
czq_26867194871 小时前
Python打卡第36天
pytorch·python·深度学习