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()
方法时不会抱怨。
答案 0 :(得分:4)
编译器不知道解析的结果类型,因为编写代码的方式可以适用于任何类型。您需要专门注释此方法调用:s.parse::<i32>().ok()