小编mma*_*yas的帖子

如何使用折叠对矢量求和?

这个 Rust教程fold()很好地解释了这个机制,这个代码如下:

let sum = (1..4).fold(0, |sum, x| sum + x);
Run Code Online (Sandbox Code Playgroud)

按预期工作.

我想在一个向量上运行它,所以基于这个例子,我首先写了这个:

let sum: u32 = vec![1,2,3,4,5,6].iter().fold(0, |sum, val| sum += val);
Run Code Online (Sandbox Code Playgroud)

哪个引起了错误:

error: binary assignment operation `+=` cannot be applied to types `_` and `&u32` [E0368]
let sum = ratings.values().fold(0, |sum, val| sum += val);
                                              ^~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

我猜这可能是由于某种原因引起的与引用相关的错误,因此我将其更改为fold(0, |sum, &val| sum += val),结果是

error: mismatched types:
expected `u32`,
   found `()`
Run Code Online (Sandbox Code Playgroud)

嗯,关闭可能有些问题?使用{sum += x; sum },我得到了

binary assignment operation `+=` cannot be applied to …
Run Code Online (Sandbox Code Playgroud)

vector rust

30
推荐指数
2
解决办法
2万
查看次数

标签 统计

rust ×1

vector ×1