循环
while循环
fn main() { let mut number = 1; while number != 4 { println!("{}", number); number += 1; } }
注意:目前Rust还没有do-while的用法, 但是do被规定为保留字, 也许以后的版本中会用到
在C语言中for循环使用三元语句控制循环, 但是 Rust 中没有这种用法,需要用 while 循环来代替
//C语言 int i; for (i = 0; i < 10; i++) { // 循环体 } //Rust let mut i = 0; while i < 10 { // 循环体 i += 1; }
for循环
for循环是最常用的循环结构常, 用来遍历一个线性数据据结构, 比如数组
fn main() { let a = [10, 20, 30, 40, 50]; for i in a.iter() { //通过迭代器进行循环, a.iter()代表a的迭代器 println!("值为 : {}", i); } let b = [10, 20, 30, 40, 50]; for i in 0..5 { println!("b[{}] = {}", i, b[i]); // for循环其实是可以通过下标来访问数组的: } }
loop 循环
某个循环无法在开头和结尾判断是否继续进行循环,必须在循环体中间某处控制循环的进行
如果遇到这种情况,经常会在一个 while(true)循环体里实现中途退出循环的操作
Rust语言有原生的无限循环结构 —— loop
fn main() { let s = ['R', 'U', 'N', 'O', 'O', 'B']; let mut i = 0; loop { let ch = s[i]; if ch == 'O' { break; } println!("\'{}\'", ch); i += 1; } } //运行结果: //'R' //'U' //'N'
break
在loop 循环中,break可以像return一样使整个循环退出,同时返回外部一个返回值
loop这样的循环常被用来当作查找工具使用, 如果找到了某个东西当然要将这个结果交出去
fn main() { let s = ['R', 'U', 'N', 'O', 'O', 'B']; let mut i = 0; let location = loop { let ch = s[i]; if ch == 'O' { break i; } i += 1; }; println!(" \'O\' 的索引为 {}", location); } //运行结果: // 'O' 的索引为 3