如何为Iterator :: filter_map指定类型信息?

时间:2016-05-23 20:39:54

标签: rust

fn main() {
    let a = ["1", "2", "lol"];
    let cnt = a.iter().filter_map(|s| s.parse().ok()).count();
}

错误消息

<anon>:3:24: 3:34 error: unable to infer enough type information about `_`; type annotations or generic parameter binding required [E0282]

<anon>:3     let cnt = a.iter().filter_map(|s| s.parse().ok()).count();
                                ^~~~~~~~~~

我尝试为filter_map()指定类型但未成功。如果可能的话,我也想知道为什么编译器在我删除count()方法时不会抱怨。

1 个答案:

答案 0 :(得分:4)

编译器不知道解析的结果类型,因为编写代码的方式可以适用于任何类型。您需要专门注释此方法调用:s.parse::<i32>().ok()