泽兴芝士网

一站式 IT 编程学习资源平台

解 Rust 中 loop、while、for 三种循环结构以及break和continue用法



各位代码循环侠们,今天咱们来聊聊 Rust 里的 "重复劳动专家"—— 循环结构。想象一下,如果生活没有循环,你每天都得重新学习走路、吃饭、打游戏,多累啊!程序里的循环也是一个道理,帮你把重复的活儿干得又快又好。

先认识三位循环大佬

  1. loop 循环:死磕到底型选手,不喊停就一直干(像追剧停不下来的你)
  2. while 循环:看心情干活型,条件满足就继续(像 "只要没下雨就坚持晨跑")
  3. for 循环:按清单办事型,把列表里的任务一个个做完(像 "把购物车里的东西逐个结账")


还有两个小助手:


  • break:紧急刹车,立刻终止循环(像游戏里突然断电)
  • continue:跳过当前回合,直接开始下一轮(像吃火锅时夹到花椒,吐掉继续吃)

实战开始!先建个项目

打开终端,输入这两行,创建一个叫loop_fun的项目:


bash

cargo new loop_fun
cd loop_fun


之后所有代码都写在src/main.rs里,每次改完运行cargo run就行,就是这么简单!

1. loop 循环:停不下来的 "追剧模式"

loop 是最执着的循环,不手动叫停就会无限循环。就像你看剧时 "再看一集就睡",结果连刷到天亮 —— 必须手动关播放器(break)才能停。

案例 1:用 loop 实现 "倒计时"

rust

fn main() {
    let mut count = 3;
    
    loop {
        println!("倒计时: {}", count);
        count -= 1;
        
        // 当count变成0时,触发break终止循环
        if count == 0 {
            println!("发射!");
            break; // 紧急刹车
        }
    }
}


运行结果:


plaintext

倒计时: 3
倒计时: 2
倒计时: 1
发射!


这就像火箭发射前的倒计时,数到 0 就必须停下并执行下一步,break 在这里就是那个 "发射" 指令。

案例 2:loop 也能当 "计算器"(带返回值)

Rust 的 loop 很聪明,还能返回值,就像自动贩卖机,循环补货直到你投币,然后吐出你要的饮料:


rust

fn main() {
    let mut money = 0;
    let price = 5;
    
    // loop像个自动贩卖机,返回买到的东西
    let drink = loop {
        money += 1;
        println!("投了{}块钱", money);
        
        if money >= price {
            // 钱够了,返回饮料并退出
            break "可乐";
        }
    };
    
    println!("买到了:{}", drink);
}


运行结果:


plaintext

投了1块钱
投了2块钱
投了3块钱
投了4块钱
投了5块钱
买到了:可乐

2. while 循环:"看天气出门" 模式

while 循环就像 "只要不下雨就去散步",条件满足就继续,不满足就回家。比 loop 灵活,自带条件判断。

案例 3:用 while 实现 "猜数字"(带 continue)

rust

fn main() {
    let secret_number = 7;
    let mut guess = 0;
    
    while guess != secret_number {
        guess += 1;
        
        // 如果是偶数就跳过(continue的作用)
        if guess % 2 == 0 {
            println!("猜了偶数{},跳过", guess);
            continue; // 跳过当前循环,直接开始下一轮
        }
        
        println!("正在猜:{}", guess);
    }
    
    println!("猜对了!答案是{}", guess);
}


运行结果:


plaintext

正在猜:1
猜了偶数2,跳过
正在猜:3
猜了偶数4,跳过
正在猜:5
猜了偶数6,跳过
正在猜:7
猜对了!答案是7


这里的 continue 就像玩游戏时遇到障碍物,直接绕过去不纠结,效率杠杠的。

案例 4:while 处理 "吃零食" 场景

rust

fn main() {
    let mut snacks = 5; // 有5包零食
    
    while snacks > 0 {
        snacks -= 1;
        
        // 最后一包留着明天吃
        if snacks == 0 {
            println!("留一包明天吃~");
            break;
        }
        
        println!("吃掉1包,还剩{}包", snacks);
    }
}


运行结果:


plaintext

吃掉1包,还剩3包
吃掉1包,还剩2包
吃掉1包,还剩1包
吃掉1包,还剩0包
留一包明天吃~

3. for 循环:"按清单办事" 模式

for 循环最擅长处理 "列表任务",就像按购物清单买东西,一个个来,绝不漏项也不重复。在 Rust 里,for 循环是处理集合的首选,安全又高效。

案例 5:遍历范围(1 到 10)

rust

fn main() {
    // 遍历1..=10(包含10),就像从1数到10
    for i in 1..=10 {
        println!("第{}步", i);
    }
    println!("完成10步!");
}


运行结果会从 "第 1 步" 一直数到 "第 10 步",完美模拟做健身操的节奏。

案例 6:遍历数组(处理批量数据)

rust

fn main() {
    let fruits = ["苹果", "香蕉", "橙子", "西瓜"];
    
    // 遍历水果数组,就像盘点冰箱里的存货
    for fruit in fruits {
        // 跳过香蕉(假设有人不爱吃)
        if fruit == "香蕉" {
            continue;
        }
        println!("我喜欢吃{}", fruit);
    }
}


运行结果:


plaintext

我喜欢吃苹果
我喜欢吃橙子
我喜欢吃西瓜

案例 7:反向遍历(倒着来)

rust

fn main() {
    // (1..=5).rev() 表示从5倒着数到1
    for i in (1..=5).rev() {
        println!("倒计时{}秒", i);
    }
    println!("时间到!");
}


这就像比赛前的倒计时,rev () 方法帮你把顺序倒过来,贴心吧~

循环中断小技巧

  • break:紧急出口,不管后面还有多少任务,立刻终止整个循环
  • break value:不仅退出,还能带回一个值(仅限 loop)
  • continue:局部跳过,当前任务不干了,直接开始下一个


就像打游戏:


  • break = 直接退出游戏
  • continue = 这关太难,跳过玩下一关

两个标题

  1. 《Rust 循环秘籍:从停不下来的 loop 到按清单办事的 for》
  2. 《学 Rust 循环,像追剧、逛街一样简单》

简介

本文用生活化的类比(追剧、购物、倒计时)通俗讲解 Rust 中的 loop、while、for 三种循环结构,以及 break 和 continue 的用法。通过多个完整案例展示循环的实际应用,包含详细的项目创建和运行步骤,让你轻松掌握 Rust 的循环逻辑,从此和重复代码说再见。

关键词

#Rust #循环结构 #loop #while #for

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言