在Exercism.io上进行Rust编程练习(https://exercism.io)时,我发现有些解决方案选择通过
我想知道在这种情况下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()
}
我想知道在这种情况下Rust何时停止迭代范围。它可能会迭代到类型的最大值,或者通过检查后续代码(例如通过检查示例中
.unwrap()
不会引发panic的位置)来确定何时可以停止迭代吗?