blob: 702b87057fdf9eebf052bb32a9077712c1de4f38 [file] [log] [blame]
Matthias Benkardf3a3b302019-02-28 12:13:56 +01001#![allow(dead_code)]
2#![allow(unused_imports)]
3
4use rust_tutorial::*;
5
6/// Run this to see the disassembly of `compute_sum_of_squares_{1,2}`:
7///
8/// ```bash
9/// cargo objdump --bin tut2 --release -- -d | awk -v RS= '/^tut2::compute_sum_of_squares/'
10/// ```
11
12#[inline(never)]
13fn compute_sum_of_squares_1(xs: &Vec<i32>) -> i32 {
14 let mut acc = 0;
15 for x in xs {
16 acc += x * x;
17 }
18 acc
19}
20
21#[inline(never)]
22fn compute_sum_of_squares_2(xs: &Vec<i32>) -> i32 {
23 xs.iter()
24 .map(|x| x * x)
25 .fold(0, |acc, x| acc + x)
26}
27
28#[test]
29fn test_compute_sum_of_squares() {
30 let numbers = vec![1, 2, 3, 4, 5];
31 assert_eq!(compute_sum_of_squares_1(&numbers), compute_sum_of_squares_2(&numbers));
32}
33
34fn main() {
35 let numbers = vec![1, 2, 3, 4, 5];
36
37 let sum_of_squares_1 = compute_sum_of_squares_1(&numbers);
38 let sum_of_squares_2 = compute_sum_of_squares_2(&numbers);
39
40 println!("sum #1 = {}", sum_of_squares_1);
41 println!("sum #2 = {}", sum_of_squares_2);
42}