- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的代码读取数字,对它们求和,然后打印总和。我尝试了一些注释,但没有用。我肯定错过了什么。我怎样才能让它发挥作用?
use std::io;
use std::io::Read;
fn main() {
let mut buff = String::new();
io::stdin().read_to_string(&mut buff).expect("read_to_string error");
let v: i32 = buff
.split_whitespace()
.filter_map(|w| w.parse().ok())
.sum();
println!("{:?}", v);
}
来自编译器的错误信息:
type annotations needed
--> src\main.rs:9:10
|
9 | .filter_map(|w| w.parse().ok())
| ^^^^^^^^^^ cannot infer type for `B`
最佳答案
让我们查看 filter_map 的签名,看看提示的是什么:
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> where F: FnMut(Self::Item) -> Option<B>,
好的,所以 Option<B>
是结果,这意味着他无法推断出什么w.parse().ok()
会的。
我们试着给他一个提示
.filter_map(|w| w.parse::<i32>().ok())
让我们编译一下……万岁!
所以,吸取教训:查找签名并尝试找出编译器无法推断的部分并尝试指定它。
关于parsing - 无法为 filter_map().sum() 推断 `B` 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51283403/
我试图在 Rust 中将 Iterator 的 filter_map 函数与 HashMap 一起使用,但我无法编译它。假设我有一个 HashMap 和一个键列表。对于每个键,如果映射包含键,我会改变
这里我有一个 (char, usize) 对的向量 vec,我想写一个函数 fn take_lt(&'a vec, cutoff: usize) -> Iterator 返回小于截止值的字符匹配值的迭
我正在尝试获取 ages所有 Person谁有一些第二名。我可以使用 filter 做到这一点和 map分别如下,但我想知道我们是否可以使用 filter_map在 rust 。 但我无法弄清楚。 s
fn main() { let a = ["1", "2", "lol"]; let cnt = a.iter().filter_map(|s| s.parse().ok()).cou
下面的代码读取数字,对它们求和,然后打印总和。我尝试了一些注释,但没有用。我肯定错过了什么。我怎样才能让它发挥作用? use std::io; use std::io::Read; fn main()
我想用 filter_map()而不是 unwrap()在 map()和 filter()但我看到这样做时性能下降。我如何使用 filter_map() 编写代码不损失性能?为什么首先会损失性能? s
我正在尝试使用 filter_map 做一些练习。下面的函数创建一个 BufRead,然后选择与正则表达式匹配的行。我希望输出为 "aaa",但编译器给我错误: returns a value ref
我是一名优秀的程序员,十分优秀!