【发布时间】:2019-08-19 17:48:34
【问题描述】:
在这里,我有一个简单的映射和迭代器的总和:
fn main() {
let s = "
aoeu
aoeu
aoeu
aoeu
";
let ls = s.lines();
let i: usize = ls.map(|l| l.len()).sum();
dbg!(i);
}
这编译并运行良好。当我查看source for lines 时,next 方法返回Option<Result<String>>。
但上面的地图直接在每个项目上调用.len()。我知道该值是从 Option 内部提取的(None 值意味着迭代器的结束)。 .len() 是否在 Result 对象上被调用?为什么我们不需要调用 map()* 之类的东西来从 Result 中提取值?
谢谢!
* 我原以为Result::map 与Iterator::map 有不同的含义,但也许我自己搞糊涂了……
【问题讨论】:
标签: rust