#![allow(dead_code)]
#![allow(unused_imports)]

use rust_tutorial::*;

/// Run this to see the disassembly of `compute_sum_of_squares_{1,2}`:
///
/// ```bash
/// cargo objdump --bin tut2 --release -- -d | awk -v RS= '/^tut2::compute_sum_of_squares/'
/// ```

#[inline(never)]
fn compute_sum_of_squares_1(xs: &Vec<i32>) -> i32 {
    let mut acc = 0;
    for x in xs {
        acc += x * x;
    }
    acc
}

#[inline(never)]
fn compute_sum_of_squares_2(xs: &Vec<i32>) -> i32 {
    xs.iter()
        .map(|x| x * x)
        .fold(0, |acc, x| acc + x)
}

#[test]
fn test_compute_sum_of_squares() {
    let numbers = vec![1, 2, 3, 4, 5];
    assert_eq!(compute_sum_of_squares_1(&numbers), compute_sum_of_squares_2(&numbers));
}

fn main() {
    let numbers = vec![1, 2, 3, 4, 5];

    let sum_of_squares_1 = compute_sum_of_squares_1(&numbers);
    let sum_of_squares_2 = compute_sum_of_squares_2(&numbers);

    println!("sum #1 = {}", sum_of_squares_1);
    println!("sum #2 = {}", sum_of_squares_2);
}
