Search code examples
rusttypesreversemin-heap

How to get the T value from std::cmp::Reverse::<T>


I have a min-heap of i32 in Rust, and I want to calculate the sum of its elements and store it in i32.

let mut total_sum = 0;
for current in min_heap {
    total_sum = current + total_sum;
}

I am getting the following error when compiling:

cannot add `{integer}` to `Reverse<i32>` 

Solution

  • You can simply call the sum method on your iterator after mapping Reverse<i32>'s inside your heap to their inner values.

    let total_sum: i32 = min_heap.into_iter()
                                .map(|i| i.0)
                                .sum();
    

    Some advices:

    1. Avoid mutations;
    2. Don't use x = x + y, use x += y instead;
    3. Don't use camelCase in function and variable names;
    4. Don't use new-line braces.