无法推断“ as”明确给出的类型

时间:2019-10-08 13:57:58

标签: casting rust primitive-types

我想编写一个函数,该函数返回总和的平方。我的第一枪看起来像这样:

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

不是sumRange<u64>上的u64的结果吗?为什么在使用as之后仍然缺少该类型?

0 个答案:

没有答案