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
语句中使用if
if
是一个表达式,所以可以在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); } }