相关疑难解决方法(0)

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

这个 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中对数组,切片或Vec中的值求和?

编者注:该问题的示例来自1.0之前的Rust版本,并引用了Rust中不再存在的类型和方法。答案仍然包含有价值的信息。

以下代码

let mut numbers = new_serial.as_bytes().iter().map(|&x| (x - 48));
let sum = numbers.sum(); 
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

let mut numbers = new_serial.as_bytes().iter().map(|&x| (x - 48));
let sum = numbers.sum(); 
Run Code Online (Sandbox Code Playgroud)

对字节数组求和应该怎么做?

以下作品:

for byte in new_serial.as_bytes().iter() {
    sum = sum + (byte - 48);
}
Run Code Online (Sandbox Code Playgroud)

rust

5
推荐指数
2
解决办法
3115
查看次数

标签 统计

rust ×2

vector ×1