我想打電話給.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