Этот код дает правильный вывод: 0.018181818
fn main() {
let v: i32 = vec![1, 2, 3, 4, 5].iter().map(|&x: &i32| x.pow(2)).sum();
println!("{}", (v as f32).recip());
}
Когда я попытался соединить их в одну строку, я потерпел неудачу, так как тип вывода после sum
отличается от требуемого типа вводаиз recip
:
fn main() {
let v: i32 = vec![1, 2, 3, 4, 5]
.iter()
.map(|&x: &i32| x.pow(2))
.sum()
.recip();
println!("{}", v);
}
error[E0282]: type annotations needed
--> src/main.rs:2:18
|
2 | let v: i32 = vec![1, 2, 3, 4, 5]
| __________________^
3 | | .iter()
4 | | .map(|&x: &i32| x.pow(2))
5 | | .sum()
| |______________^ cannot infer type for `S`
|
= note: type must be known at this point
Я также задал этот вопрос на форуме пользователя Rust .