Skip to content

Rust 控制流

控制流是编程语言中用于控制程序执行流程的结构。本章节将介绍 Rust 中的控制流结构,包括条件语句和循环。

条件语句

if 语句

if 语句用于根据条件执行不同的代码块:

rust
fn main() {
    let number = 5;
    
    if number > 0 {
        println!("Number is positive");
    } else if number < 0 {
        println!("Number is negative");
    } else {
        println!("Number is zero");
    }
}

if 表达式

在 Rust 中,if 是一个表达式,可以返回值:

rust
fn main() {
    let number = 5;
    
    let result = if number > 0 {
        "Positive"
    } else if number < 0 {
        "Negative"
    } else {
        "Zero"
    };
    
    println!("Result: {}", result);
}

注意:if 表达式的所有分支必须返回相同类型的值。

match 语句

match 语句是 Rust 中强大的模式匹配工具:

rust
fn main() {
    let number = 3;
    
    match number {
        1 => println!("One"),
        2 => println!("Two"),
        3 => println!("Three"),
        _ => println!("Other"),
    }
}

match 语句也可以返回值:

rust
fn main() {
    let number = 3;
    
    let result = match number {
        1 => "One",
        2 => "Two",
        3 => "Three",
        _ => "Other",
    };
    
    println!("Result: {}", result);
}

if let 语句

if letmatch 的简化形式,用于处理只有一个匹配分支的情况:

rust
fn main() {
    let some_number = Some(5);
    
    if let Some(x) = some_number {
        println!("Number is: {}", x);
    } else {
        println!("No number");
    }
}

while let 语句

while let 用于在循环中处理 Option 类型:

rust
fn main() {
    let mut stack = vec![1, 2, 3];
    
    while let Some(top) = stack.pop() {
        println!("Popped: {}", top);
    }
}

循环

loop 循环

loop 是一个无限循环,直到遇到 break 语句:

rust
fn main() {
    let mut counter = 0;
    
    loop {
        counter += 1;
        println!("Counter: {}", counter);
        
        if counter >= 5 {
            break;
        }
    }
}

loop 可以返回值:

rust
fn main() {
    let mut counter = 0;
    
    let result = loop {
        counter += 1;
        
        if counter >= 5 {
            break counter * 2;
        }
    };
    
    println!("Result: {}", result);
}

while 循环

while 循环在条件为真时执行:

rust
fn main() {
    let mut counter = 0;
    
    while counter < 5 {
        println!("Counter: {}", counter);
        counter += 1;
    }
}

for 循环

for 循环用于遍历集合:

rust
fn main() {
    let numbers = [1, 2, 3, 4, 5];
    
    for number in numbers {
        println!("Number: {}", number);
    }
    
    // 遍历范围
    for i in 0..5 {
        println!("i: {}", i);
    }
    
    // 遍历迭代器
    for i in (0..5).rev() {
        println!("i: {}", i);
    }
}

循环控制

break 语句

break 语句用于退出循环:

rust
fn main() {
    for i in 0..10 {
        if i == 5 {
            break;
        }
        println!("i: {}", i);
    }
}

continue 语句

continue 语句用于跳过当前循环迭代,继续下一次迭代:

rust
fn main() {
    for i in 0..10 {
        if i % 2 == 0 {
            continue;
        }
        println!("i: {}", i);
    }
}

总结

  • 条件语句ifif letmatch
  • 循环loopwhilefor
  • 循环控制breakcontinue
  • Rust 中的 ifmatch 都是表达式,可以返回值

通过本章节的学习,你应该已经掌握了 Rust 中的控制流结构,可以在你的程序中使用这些结构来控制程序的执行流程。