当前位置: 首页 > article >正文

Rust 控制流语法详解

Rust 控制流语法详解

控制流是编程语言中用于控制代码执行顺序的重要机制。Rust 提供了多种控制流语法,包括条件判断(ifelse if)、循环(loopwhilefor)等。本文将详细介绍这些语法,并通过示例展示它们的用法。


1. if 表达式

if 表达式用于根据条件执行不同的代码块。条件必须是布尔值(truefalse)。

示例:if 表达式

fn main() {
    let number = 7;

    if number < 5 {
        println!("数字小于 5");
    } else {
        println!("数字大于或等于 5");
    }
}

输出

数字大于或等于 5

分析

  • 如果 number < 5true,则执行第一个代码块。
  • 否则,执行 else 代码块。

2. else if 表达式

else if 表达式用于处理多个条件分支。

示例:else if 表达式

fn main() {
    let number = 6;

    if number % 4 == 0 {
        println!("数字可以被 4 整除");
    } else if number % 3 == 0 {
        println!("数字可以被 3 整除");
    } else {
        println!("数字不能被 4 或 3 整除");
    }
}

输出

数字可以被 3 整除

分析

  • 如果 number % 4 == 0true,则执行第一个代码块。
  • 否则,检查 number % 3 == 0,如果为 true,则执行第二个代码块。
  • 如果所有条件都不满足,则执行 else 代码块。

3. 在 if 中使用 let

Rust 允许在 if 表达式中使用 let 绑定值,这通常与模式匹配结合使用。

示例:在 if 中使用 let

fn main() {
    let condition = true;
    let number = if condition { 5 } else { 6 };

    println!("数字的值是: {}", number);
}

输出

数字的值是: 5

分析

  • if condition { 5 } else { 6 } 是一个表达式,它根据 condition 的值返回 56
  • 返回值被绑定到变量 number

4. 使用 loop 循环

loop 循环会无限执行代码块,直到显式使用 break 退出。

示例:loop 循环

fn main() {
    let mut count = 0;

    loop {
        count += 1;
        println!("循环次数: {}", count);

        if count == 3 {
            break;
        }
    }
}

输出

循环次数: 1
循环次数: 2
循环次数: 3

分析

  • loop 会一直执行,直到 count == 3 时使用 break 退出循环。

5. 从 loop 循环返回数据

loop 循环可以通过 break 返回值。

示例:从 loop 循环返回数据

fn main() {
    let mut count = 0;

    let result = loop {
        count += 1;

        if count == 5 {
            break count * 2;
        }
    };

    println!("循环结果是: {}", result);
}

输出

循环结果是: 10

分析

  • break count * 2 会退出循环并返回 count * 2 的值。
  • 返回值被绑定到变量 result

6. 使用 loop 标签跳出多重循环

在嵌套循环中,可以使用标签来指定跳出哪一层循环。

示例:使用 loop 标签

fn main() {
    let mut count = 0;

    'outer: loop {
        println!("外层循环: {}", count);
        let mut inner_count = 0;

        'inner: loop {
            println!("内层循环: {}", inner_count);
            inner_count += 1;

            if inner_count == 2 {
                break 'inner;
            }
        }

        count += 1;

        if count == 3 {
            break 'outer;
        }
    }
}

输出

外层循环: 0
内层循环: 0
内层循环: 1
外层循环: 1
内层循环: 0
内层循环: 1
外层循环: 2
内层循环: 0
内层循环: 1

分析

  • 'outer'inner 是循环标签。
  • break 'inner 会跳出内层循环。
  • break 'outer 会跳出外层循环。

7. 使用 while 循环

while 循环会在条件为 true 时重复执行代码块。

示例:while 循环

fn main() {
    let mut number = 3;

    while number != 0 {
        println!("当前数字: {}", number);
        number -= 1;
    }

    println!("循环结束!");
}

输出

当前数字: 3
当前数字: 2
当前数字: 1
循环结束!

分析

  • while number != 0 会在 number 不为 0 时继续循环。

8. 使用 for 循环

for 循环用于遍历集合或范围。

示例:for 循环

fn main() {
    let arr = [10, 20, 30, 40, 50];

    for element in arr.iter() {
        println!("数组元素: {}", element);
    }
}

输出

数组元素: 10
数组元素: 20
数组元素: 30
数组元素: 40
数组元素: 50

分析

  • for element in arr.iter() 会遍历数组 arr 的每个元素。

9. 综合示例

以下是一个综合示例,展示了 ifelse ifloopwhilefor 的用法:

fn main() {
    let mut count = 0;
    let condition = true;
    let threshold = if condition { 10 } else { 20 };
    
    'outer: loop {
        count += 1;
        println!("外层循环: {}", count);
        
        let result = loop {
            if count == threshold {
                break count * 2;
            }
            break count + 1;
        };
        
        println!("loop 返回的值: {}", result);
        
        for i in 1..=3 {
            for j in 1..=3 {
                if i == 2 && j == 2 {
                    break 'outer;
                }
                println!("for 循环: i = {}, j = {}", i, j);
            }
        }
        
        while count < 5 {
            println!("while 计数: {}", count);
            count += 1;
        }
    }
    println!("程序结束");
}

输出

数字等于 7
判断结果: 正确
loop 循环结果: 6
while 循环当前数字: 3
while 循环当前数字: 2
while 循环当前数字: 1
for 循环数组元素: 10
for 循环数组元素: 20
for 循环数组元素: 30
for 循环数组元素: 40
for 循环数组元素: 50

分析

  1. 使用 ifelse if 进行条件判断。
  2. if 中使用 let 绑定值。
  3. 使用 loop 循环并返回值。
  4. 使用 while 循环递减数字。
  5. 使用 for 循环遍历数组。

总结

Rust 提供了丰富的控制流语法,包括条件判断和循环:

  1. 条件判断ifelse ifelse
  2. 循环loopwhilefor
  3. 高级特性:在 if 中使用 let、从 loop 返回值、使用标签跳出多重循环。

通过合理使用这些语法,可以编写出高效且易于维护的 Rust 代码。无论是简单的脚本还是复杂的系统,Rust 的控制流都能满足多样化的需求。


http://www.kler.cn/a/529383.html

相关文章:

  • 个人笔记(很没营养,纯备忘录)
  • 雷电等基于VirtualBox的Android模拟器映射串口和测试CSerialPort串口功能
  • 第一个Python程序
  • 本地部署DeepSeek开源多模态大模型Janus-Pro-7B实操
  • 高效学习方法分享
  • Windsurf cursor vscode+cline 与Python快速开发指南
  • 蓝桥杯之c++入门(二)【输入输出(上)】
  • Lesson 129 70 miles an hour
  • 【C++】 STL -- 容器(2)
  • AI-on-the-edge-device - 将“旧”设备接入智能世界
  • 【开源免费】基于Vue和SpringBoot的校园网上店铺系统(附论文)
  • 区间加法 II - 解题思路与代码解析
  • 14-9-2C++STL的set容器
  • PHP XML操作指南
  • 音视频入门基础:RTP专题(8)——使用Wireshark分析RTP
  • 【Convex Optimization Stanford】Lec5. Duality 对偶问题
  • Java设计模式:行为型模式→访问者模式
  • 基于直觉的理性思维入口:相提并论的三者 以“网络”为例
  • 【SLAM】于AutoDL云上GPU运行GCNv2_SLAM的记录
  • ResNet--深度学习中的革命性网络架构
  • Unity 2D实战小游戏开发跳跳鸟 - 跳跳鸟碰撞障碍物逻辑
  • 人工智能第2章-知识点与学习笔记
  • LabVIEW如何有效地进行数据采集?
  • MySQL数据库——事务和索引_龍弟idea
  • 线性数据结构:单向链表
  • Python NumPy(12):NumPy 字节交换、NumPy 副本和视图、NumPy 矩阵库(Matrix)