Rust 控制流

4 阅读3分钟

在 Rust 中,控制流语句用于决定程序执行的顺序,主要包括条件语句、循环语句等。

条件语句

if 语句

if 语句用于根据条件来决定是否执行某段代码。基本语法如下:

fn main() { 
    let number = 3; 
    if number < 5 { 
        println!("The number is less than 5."); 
    } 
} 

在上述代码中,如果 number 小于 5,则会执行 if 块内的代码。 if 语句还可以结合 else 使用,当条件不满足时执行 else 块内的代码:

fn main() { 
    let number = 7; 
    if number < 5 { 
        println!("The number is less than 5."); 
    } else { 
        println!("The number is greater than or equal to 5."); 
    } 
} 

你可以使用多个 else if 来处理多个条件:

fn main() { 
    let number = 10; 
    if number < 5 { 
        println!("The number is less than 5."); 
    } else if number < 10 { 
        println!("The number is less than 10 but greater than or equal to 5."); 
    } else { 
        println!("The number is greater than or equal to 10."); 
    } 
} 

在 Rust 中,if 是一个表达式,这意味着它可以有返回值。示例如下:

fn main() { 
    let condition = true; 
    let number = if condition { 5 } else { 6 }; 
    println!("The value of number is {}.", number); 
} 

这里 if 表达式根据 condition 的值返回不同的整数,然后将其赋值给 number

match 语句

match 语句用于对一个值进行模式匹配,根据不同的匹配结果执行不同的代码块。它类似于其他语言中的 switch 语句,但功能更强大。示例如下:

fn main() { 
    let number = 1; 
    match number { 
        1 => println!("The number is 1."), 
        2 => println!("The number is 2."), 
        _ => println!("The number is not 1 or 2."), 
    } 
} 

在上述代码中,matchnumber 进行匹配,当 number 为 1 时,执行对应的代码块;当为 2 时,执行相应代码块;_ 是通配符,当其他模式都不匹配时,执行 _ 对应的代码块。 ### 循环语句 #### loop 循环 loop 语句会无限循环执行代码块,直到遇到 break 语句。 示例如下:

fn main() { 
    let mut counter = 0; 
    loop { 
        counter += 1; 
        if counter == 5 { 
            break; 
        } 
        println!("The counter is {}.", counter); 
    } 
} 

在这个例子中,loop 不断递增 counter 的值,当 counter 等于 5 时,使用 break 语句跳出循环。 break 语句还可以返回一个值,示例如下:

fn main() { 
    let mut counter = 0; 
    let result = loop { 
        counter += 1; 
        if counter == 5 { 
            break counter * 2; 
        } 
    }; 
    println!("The result is {}.", result); 
} 

while 循环

while 循环在条件为 true 时执行代码块,每次循环开始前都会检查条件。示例如下:

fn main() { 
    let mut number = 3; 
    while number > 0 { 
        println!("{}!", number); number -= 1; 
    } 
    println!("LIFTOFF!"); 
} 

在这个例子中,只要 number 大于 0,就会执行 while 块内的代码,每次循环将 number 减 1,直到 number 不大于 0 时退出循环。

for 循环

for 循环通常用于遍历集合类型(如数组、向量等)。示例如下:

fn main() { 
    let a = [10, 20, 30, 40, 50]; 
    for element in a.iter() { 
        println!("The value is {}.", element); 
    } 
} 

在上述代码中,for 循环遍历数组 a 中的每个元素,并打印出来。 for 循环还可以结合 Range 类型来进行计数循环,示例如下:

fn main() { 
    for number in (1..4).rev() { 
        println!("{}!", number); 
    } 
    println!("LIFTOFF!"); 
} 

这里使用 (1..4).rev() 创建一个从 3 到 1 的逆序范围,然后 for 循环遍历这个范围。 通过这些控制流语句,可以编写出逻辑复杂且灵活的 Rust 程序。