我想打电话给.map()
枚举阵列上:如何收集数组?
enum Foo {
Value(i32),
Nothing,
}
fn main() {
let bar = [1, 2, 3];
let foos = bar.iter().map(|x| Foo::Value(*x)).collect::<[Foo; 3]>();
}
但是编译器会抱怨:
error[E0277]: the trait bound `[Foo; 3]: std::iter::FromIterator<Foo>` is not satisfied
--> src/main.rs:8:51
|
8 | let foos = bar.iter().map(|x| Foo::Value(*x)).collect::<[Foo; 3]>();
| ^^^^^^^ a collection of type `[Foo; 3]` cannot be built from an iterator over elements of type `Foo`
|
= help: the trait `std::iter::FromIterator<Foo>` is not implemented for `[Foo; 3]`
我该怎么办呢?
数组确实实现了特征,至少是短特征。标准库包含很多用于短阵列的实现(我认为最多有12个元素)。问题是你不能为所有数组做一个通用的实现,并且没有数组实现FromIterator。 – 2016-11-06 23:19:59