考虑以下几点:
fn main() {
let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let even = input.iter().filter(|&x| x % 2 == 0).collect::<Vec<&i32>>();
for x in &even {
println!("{}", x);
}
}
这会输出 2 4 6 8 10
(如预期)。但是,如果我只想要前 3 项怎么办?是否可以以某种方式限制 collect
的返回值,而不是先收集所有内容然后再丢弃一些项目?
最佳答案
你可以使用 Iterator::take
:
fn main() {
let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let even = input
.iter()
.filter(|&x| x % 2 == 0)
.take(3)
.collect::<Vec<&i32>>();
for x in &even {
println!("{}", x);
}
}
关于rust - 如何将 collect() 的结果限制为一定数量的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46017779/