小编Sok*_*dez的帖子

Rust 如何知道何时停止在没有上限的范围内迭代?

对于exercism.io上的Nth Prime Rust 练习,我发现一些解决方案选择了一个没有上限的范围。filter()

下面是一个例子:

pub fn nth(n: u32) -> u32 {
    let mut primes = Vec::with_capacity((n as usize) + 1);

    (2..)
        .filter(|candidate| {
            if !primes.iter().any(|i| candidate % i == 0) {
                primes.push(*candidate);
                true
            } else {
                false
            }
        })
        .nth(n as usize)
        .unwrap()
}
Run Code Online (Sandbox Code Playgroud)

我想知道 Rust 在这种情况下何时停止迭代范围。它可能会迭代到类型的最大值,还是可以通过检查迭代器后面的代码来确定何时可以停止迭代(例如,通过检查.unwrap()示例中的何时不恐慌)?

iterator loops range infinite-loop rust

2
推荐指数
1
解决办法
114
查看次数

标签 统计

infinite-loop ×1

iterator ×1

loops ×1

range ×1

rust ×1