对于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()示例中的何时不恐慌)?