我想编写一个函数,该函数返回总和的平方。我的第一枪看起来像这样:
fn square_of_sum(lim: u64) -> u64 {
let sum: u64 = (1..lim).sum().pow(2);
sum
}
哪个给我一个错误:
error[E0282]: type annotations needed
--> src/lib.rs:2:20
|
2 | let sum: u64 = (1..lim).sum().pow(2);
| ^^^^^^^^^^^^^^ cannot infer type for `S`
|
= note: type must be known at this point
因此,考虑到C语言,我将sum
的结果显式转换为u64
,但仍然有错误
error[E0282]: type annotations needed
--> src/lib.rs:2:20
|
2 | let sum: u64 = ((1..lim).sum() as u64).pow(2);
| ^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for `S`
|
= note: type must be known at this point
不是sum
到Range<u64>
上的u64
的结果吗?为什么在使用as
之后仍然缺少该类型?