use crossbeam_channel; use std::{thread, time}; fn parallel_map(mut input_vec: Vec, num_threads: usize, f: F) -> Vec where F: FnOnce(T) -> U + Send + Copy + 'static, T: Send + 'static, U: Send + 'static + Default, { let mut output_vec: Vec = Vec::with_capacity(input_vec.len()); // TODO: implement parallel map! output_vec } fn main() { let v = vec![6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 12, 18, 11, 5, 20]; let squares = parallel_map(v, 10, |num| { println!("{} squared is {}", num, num * num); thread::sleep(time::Duration::from_millis(500)); num * num }); println!("squares: {:?}", squares); }