如何在 Rust 中将迭代器元素收集到固定大小的数组中?
大家好!我最近开始学习 Rust,遇到了一个看似非常简单的问题,但我找不到正确的解决方案。
我有一个返回数字序列的 iterator。我想将这些数字收集到一个 [i32; N] 数组中,其中 N 在编译时已知。例如,我编写了一个函数,它接受一个数字切片并返回前 5 个元素的数组:
fn first_five(data: &[i32]) -> [i32; 5] {
data.iter().take(5).collect() // 不工作!
}
编译器报错:the trait bound `[i32; 5]: FromIterator<&i32>` is not satisfied。我理解 collect() 适用于像 Vec 这样的集合,但如何让它与数组一起工作?
我尝试过显式指定类型:let arr: [i32; 5] = data.iter().take(5).collect(); — 但这也没有帮助。在其他语言(Python、JavaScript)中,这只需一行代码就能完成,而在这里却需要编写...