循环
Rust有 for、while、loop三种循环。
for
Rust的循环还是有很多独特的地方的,在for循环中,rust是采用了迭代器的方式实现的,有点像Python和js的。
for x in iterator{
...
}
上面的表达式是一个迭代器。迭代器提供一系列的元素。每个元素是迭代的一次循环。接着迭代器的值被绑定到变量 x,它是循环体控制循环的主体。一旦循环体执行结束,就从迭代器中获取下一个,接着执行下一次循环。当迭代器中没有更多的值可以获取的时候,for 循环结束。
例:
for i in 0..10 {
println!("{}", i);
}
结果为:
0
1
2
3
4
5
6
7
8
9
0..10表达式取一个开始和结束的位置,然后给出一个含有这之间值得迭代器。当然它不包括上限值,所以我们的循环会打印0到9,而不是到10。
rust的for循环提供了记录循环次数的函数 enumerate() 。
例:
for (j,i) in (10..15).enumerate() {
println!("第{}次是{}。", j,i);
}
结果为:
第0次是10。
第1次是11。
第2次是12。
第3次是13。
第4次是14。
while
对于while循环就基本和C一样了。
//绑定一个i32可变变量。
let mut x = 5;
//绑定一个bool可变变量。
let mut boolen = false;
while !boolen {
x -= 1;
println!("{}", x);
if x * 1 == 0 {
boolen = true;
}
}
break 和 continue
break和continue在rust中和C/C++、Python、Java等语言是一样的用法,下面在使用中也会讲到,因此就不讲啦!
loop
Rust的loop可以说是十分有用的,它是一个无限循环和C的goto语句中的loop不同。
例:
let mut num = 0;
loop {
num += 5;
if num == 50 { break; }
}
标签(Label)
C语言的goto语句让人既爱又恨,但是在rust中开发者却通过定义标签解决了这个问题。通过对循环定义唯一的标签,让break或者continue跳转到指定的循环。
例:
'one: for x in 0..10{
'two: for i in 2..12{
if x % 2 == 0{continue 'one;}
if i >= 10{break 'two;}
println!("i is :{} x is :{}",i,x);
}
}