跟着谷歌学习Rust:第八课-let关键字的控制流

94 阅读1分钟

if let

fn sleep_for(secs: f32) {
    let dur = if let Ok(dur) = std::time::Duration::try_from_secs_f32(secs) {
        dur
    } else {
        std::time::Duration::from_millis(500)
    };
    std::thread::sleep(dur);
    println!("slept for {:?}", dur);
}

fn main() {
    sleep_for(-10.0);
    sleep_for(0.8);
}

if let有点类似Java语言中的三目表达式。就是if expressions ? a : b

if let 和 match其实差不多,如果判断的层级只有两级可以使用if let。并且if let相比于match实现更加简洁。

经常使用的地方是使用Option做判断。

while let

fn main() {
    let mut name = String::from("Comprehensive Rust 🦀");
    while let Some(c) = name.pop() {
        println!("character: {c}");
    }
    // (There are more efficient ways to reverse a string!)
}

总结

google.github.io/comprehensi…