【发布时间】:2023-01-19 00:24:18
【问题描述】:
在处理 rust 的训练问题时,我需要将所有项目放入一个向量中,对每个项目进行平方,然后对它们求和。我意识到这不是好的代码,更改它比询问 StackOverflow 更快。我将改变它的工作方式,但现在我只是想学习如何使用地图,似乎没有示例可以帮助我解决这个问题。这是为了理解,但如果您有更惯用的方式来非常简单地对此进行编码,我也很乐意看到。这是代码行:
let thing1 = divs.into_iter().map(|n| -> n*n).collect::<Vec<u64>>.iter().sum();
重要的一点是:
divs.into_iter().map(|n| -> n*n)
这是错误:
error: expected `{`, found `*`
--> src/lib.rs:10:51
|
10 | let thing1 = divs.into_iter().map(|n| -> n*n).collect::<Vec<u64>>.iter().sum();
| ^ expected `{`
|
help: try placing this code inside a block
|
10 | let thing1 = divs.into_iter().map(|n| -> n{ *n }).collect::<Vec<u64>>.iter().sum();
| + +
error: could not compile `challenge` due to previous error
无论我对 n、n+1 等执行什么操作,此错误都会持续存在。我尝试执行编译器想要的操作,但它认为我正在尝试取消引用 n。我不明白为什么地图会这样 - 我见过的所有例子都没有在地图中使用块。
【问题讨论】:
-
|n| -> n*n是闭包的无效语法 -->仅在指定返回类型时使用。|n| n*n是正确的写法。
标签: rust