【发布时间】:2018-04-22 13:27:38
【问题描述】:
我正在尝试从嵌套迭代器中收集数据,但收到 FromIterator 未实现错误。这是一个例子:
#[derive(PartialEq)]
enum DayStatus {
Normal,
Abnormal,
}
struct Week {
days: Vec<Day>,
}
struct Day {
status: DayStatus,
}
struct Month {
weeks: Vec<Week>,
}
fn get_abnormal_days(month: Month) -> Vec<Day> {
// assume we have a month: Month which is filled
month
.weeks
.iter()
.map(|w| w.days.iter().filter(|d| d.status == DayStatus::Abnormal))
.collect()
}
fn main() {}
给我:
error[E0277]: the trait bound `std::vec::Vec<Day>: std::iter::FromIterator<std::iter::Filter<std::slice::Iter<'_, Day>, [closure@src/main.rs:24:39: 24:74]>>` is not satisfied
--> src/main.rs:25:10
|
25 | .collect()
| ^^^^^^^ a collection of type `std::vec::Vec<Day>` cannot be built from an iterator over elements of type `std::iter::Filter<std::slice::Iter<'_, Day>, [closure@src/main.rs:24:39: 24:74]>`
|
= help: the trait `std::iter::FromIterator<std::iter::Filter<std::slice::Iter<'_, Day>, [closure@src/main.rs:24:39: 24:74]>>` is not implemented for `std::vec::Vec<Day>`
我可以尝试impl 和FromIterator,但它必须来自的类型似乎太内向而无法处理。我想我没有打电话给正确的collect 或者map,但我看不出我错过了什么
我第一次尝试返回 &[Day],但也失败了。
【问题讨论】:
标签: rust