MST

星途 面试题库

面试题:Rust中while表达式与复杂场景结合

假设有一个Rust函数 `fn get_number() -> Option<i32>`,该函数会随机返回一个 `Some(i32)` 或 `None`。使用while表达式实现一个循环,不断调用 `get_number` 函数,直到获取到的数字大于100或者连续5次返回 `None`。如果最终获取到大于100的数字,返回该数字;如果是连续5次返回 `None`,则返回 `None`。
30.5万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn get_number() -> Option<i32> {
    // 这里假设实际实现会随机返回Some(i32)或None
    None
}

fn main() {
    let result = {
        let mut none_count = 0;
        loop {
            match get_number() {
                Some(num) if num > 100 => break Some(num),
                Some(_) => none_count = 0,
                None => {
                    none_count += 1;
                    if none_count >= 5 {
                        break None;
                    }
                }
            }
        }
    };
    println!("{:?}", result);
}