「Rust」4 流程控制与模式匹配

if - else

if 语句块可以是表达式

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

循环控制

for 循环

for i in &set {
    //do something
}

使用for时我们经常使用集合的 引用形式,未实现copy特征的数据类型,其所有权会被 move 到 for语句中。

想要在循环中,进行元素的修改,需要使用mut关键字

  • 获取值和索引
fn main() {
    let a = [4,3,2,1];
    // `.iter()` 方法把 `a` 数组变成一个迭代器
    for (i,v) in a.iter().enumerate() {
        println!("第{}个元素是{}",i+1,v);
    }
}
  • while 循环

    for相比,可能出现索引长度而导致的越界问题

loop 循环

需要通过break关键字来跳出循环,break可以带一个返回值。

fn main() {
    let mut counter = 0;
    let result = loop {
        counter += 1;
        if counter == 10 {
            break counter * 2;//返回值
        }
    };

    println!("The result is {}", result);
}

match 和 if let

enum Direction {
    East,
    West,
    North,
    South,
}
fn main() {
    let dire = Direction::South;
    match dire {
        Direction::East => println!("East"),
        Direction::North | Direction::South => {
            println!("South or North");
        },
        _ => println!("West"),
    };
}

match的匹配要穷举出所有可能,使用_表示default

#rust #笔记
0%