3.5 控制流
Rust中的控制流结构主要包括:
if条件判断;loop循环;while循环;for .. in循环。
3.5.1 if条件判断
-
if执行条件判断,示例如下:fn main() { let a = 2u32; if a > 5u32 { println!("a > 5"); } else { println!("a <= 5"); } } -
if - else if处理多重条件,示例如下:fn main() { let a = 3u32; if a > 5u32 { println!("a > 5"); } else if a > 4u32 { println!("a > 4"); } else if a > 3u32 { println!("a > 3"); } else if a > 2u32 { println!("a > 2"); } else if a > 1u32 { println!("a > 1"); } else { println!("a = 1"); } } -
在
let语句中使用ifif是一个表达式,所以可以在let右侧使用,如下:fn main() { let a = 3u32; let a_bigger_than_two: bool = if a > 2u32 { true } else { false }; if a_bigger_than_two { println!("a > 2"); } else { println!("a <= 2"); } }
3.5.2 loop循环
-
loop重复执行代码
fn main() { // 一直循环打印 again! loop { println!("again!"); } } -
使用
break终止循环fn main() { let mut counter = 0; loop { println!("counter = {:?}", counter); counter += 1; if counter == 10 { break; // 将终止循环 } } }上面的代码将打印10次,遇到
break后终止循环。另外,break也可以返回值,如下:fn main() { let mut counter = 0; let result = loop { counter += 1; if counter == 10 { break counter * 2; } }; println!("The result is {result}"); } -
使用
continue可以直接跳到下一轮循环fn main() { let mut x = 0; // 此循环将只打印10以内的奇数 loop { x += 1; if x == 10 { break; } if x % 2 == 0 { continue; // 将直接跳到下一轮循环 } println!("{}", x); } }
3.5.3 while条件循环
-
while条件循环执行代码,当条件不满足时结束循环,如下:fn main() { let mut cnt = 0u32; while cnt < 10 { println!("cnt = {:?}", cnt); cnt += 1; } } -
在
while循环中也可以使用break和continue,如下:fn main() { let mut x = 0; while x < 10 { x += 1; println!("{}", x); if x % 2 == 0 { continue; // 跳到下一轮循环 } if x > 8 { break; // 提前结束 } } }
3.5.4 for .. in 循环
for循环用来对一个集合的每个元素执行一些代码,使用方式如下:
fn main() { let a = [10, 20, 30, 40, 50]; for item in a { println!("the value is: {:?}", item); } }