“无法推断类型为f64的类型,并且”考虑给定...类型”错误消息

问题描述 投票:1回答:1

此代码可以正常工作:

let list_of_integers = vec![1, 2, 3, 4];

let avg: f64 = f64::from(list_of_integers.iter().sum::<i32>()) / f64::from(list_of_integers.len() as i32);

但是如果我省略sum()的turbofish,则会收到此错误消息:

  |
4 |     let avg: f64 = f64::from(list_of_integers.iter().sum()) / f64::from(list_of_integers.len() as i32);
  |         ---        ^^^^^^^^^ cannot infer type for type `f64`
  |         |
  |         consider giving `avg` a type
  |
  = note: cannot resolve `f64: std::convert::From<_>`
  = note: required by `std::convert::From::from`

这些错误消息是什么意思?我是否以某种方式更改了语法,并且: f64不再是avg的类型?

rust type-inference
1个回答
0
投票
这里的错误消息可以说是指向错误的功能;它可能会抱怨“我不知道此sum()将返回哪种类型”或“我不知道此from函数将接受哪种类型”-不幸的是,在这种情况下,它选择了不太清晰的一种:)] >
© www.soinside.com 2019 - 2024. All rights reserved.