rust 语法和语义 07 循环

rust 语法和语义 07 循环

循环:loops


概述

rust提供了三种迭代操作的方法:loopwhilefor

loop { /* loop forever! */ }

while if_expression { /* do until expression become false */ }

for var in iterators_expression { /* do something */ }

loop

无限循环,使用关键字 loop

loop {
    // loop forever!
}

while

while 循环是当你不确定应该循环多少次时正确的选择。

let mut x = 5;
let mut done = false;

while !done {
    x += x - 3;
    if x % 5 == 0 {
        done = true;
    }
}

无限循环的 while true {}loop {} 。rust的控制流分析会区别对待。请倾向于使用 loop


for

for 用来循环一个特定的次数。

for var in expression { code }

而这个表达式expression是一个 迭代器

  • 迭代器返回一系列的元素
  • 每次迭代循环中的一个元素,值于var绑定
  • 它在循环体中有效
  • 每次循环就从迭代器中取出下一个值,直至取完,循环结束。

如,

for x in 0..10 {
    println!("{}", x);
}

Enumerate 方法

当你需要记录你已经循环了多少次了的时候,你可以使用 .enumerate() 函数。

对于范围 On ranges
for (i, v) in (5..10).enumerate() {
    println!("index = {} and value = {}", i, v);
}
对于迭代器 On iterators
let lines = "hello\nworld".lines();
for (linenumber, line) in lines.enumerate() {
    println!("{}: {}", linenumber, line);
}

提早结束迭代 Ending iteration early

rust 有两个关键字 breakcontinue

  • break:退出循环
  • continue:进行下一次循环

用在 while 中,

let mut x = 5;
loop {
    x += x - 3;
    if x % 5 == 0 { break; }
}

用在 for 中,

for x in 0..10 {
    if x % 2 == 0 { continue; }
    println!("{}", x);
}

循环标签 loop labels

如大多数语言,默认 breakcontinue 将会作用于 最内层 的循环。

rust可以使用标签 'label_name: (单引号+标签名+冒号) 来指定你的 breakcontinue 语句作用的循环。

'outer: for x in 0..10 {
    'inner: for y in 0..10 {
        if x % 2 == 0 {continue 'outer;} // Continues the loop over `x`.
        if y % 2 == 0 {continue 'inner;} // Continues the loop over `y`.
        println!("x: {}, y: {}", x, y);
    }
}

参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值