Error while calculating Getting average of chunks


#1

I’ve a series of elements, that I need to divide them into chunks of 12, then calculate the average of each chunk, I wrote the below code, but got error:

error[E0282]: type annotations needed
–> src/main.rs:20:26
|
20 | .map(|chunk| chunk.iter().sum() as f32/ chunk.len() as f32)
| ^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for S

error: aborting due to previous error

PlayGround

fn main() {
    let series = [30,21,29,31,40,48,53,47,37,39,31,29,17,9,20,24,27,35,41,38,
          27,31,27,26,21,13,21,18,33,35,40,36,22,24,21,20,17,14,17,19,
          26,29,40,31,20,24,18,26,17,9,17,21,28,32,46,33,23,28,22,27,
          18,8,17,21,31,34,44,38,31,30,26,32];

    find_chunks_averages(&series, 12);
}

fn find_chunks_averages(series: &[i32], chunk_length: i32){
    let _season_averages = series.to_vec();

    let _chunks = series
            .chunks(chunk_length as usize)
            .collect::<Vec<_>>();

    let _chunks_averages= _chunks
            .iter()
            .map(|chunk| chunk.iter().sum() as f32/ chunk.len() as f32)
            .collect::<Vec<f32>>();

        println!("The chunks you have are:: {:#?}", _chunks);
        println!("The averagesof the chunks are: {:#?}", _chunks_averages);
}

#2

The S come from sum.
You just need to add the qualifier like used in other parts of the code;
.sum::<i32>()