#![feature(duration_as_u128)]

extern crate rayon;

use rayon::prelude::*;
use std::thread::sleep;
use std::time::{Duration, Instant};

fn main() {
let style "color: #dcdcaa;">vec![0, 1, 2, 3];
let start = Instant::now();
let result: Vec<i32> = data.iter().map(|n| expensive(*n)).collect();
let elapsed = start.elapsed().as_millis();
println!(
"##### without rayon\nelapsed: {}ms\nresult: {:?}",
elapsed, result
);

println!("");

let style="color: #dcdcaa;">vec![0, 1, 2, 3];
let start = Instant::now();
// iter -> par_iter : 알아서 모든 cpu core 이용해줌
let result: Vec<i32> = data.par_iter().map(|n| expensive(*n)).collect();
let elapsed = start.elapsed().as_millis();
println!(
"##### with rayon\nelapsed: {}ms\nresult: {:?}",
elapsed, result
);
}

fn expensive(n: i32) -> i32 {
sleep(Duration::from_millis(500));
n * 2
}


메소드 하나만 바꿔주면 데이터 이터레이션 과정에서 알아서 멀티코어로 해주네 ㄷㄷ