24 lines
674 B
Rust
24 lines
674 B
Rust
use crossbeam_channel;
|
|
use std::{thread, time};
|
|
|
|
fn parallel_map<T, U, F>(mut input_vec: Vec<T>, num_threads: usize, f: F) -> Vec<U>
|
|
where
|
|
F: FnOnce(T) -> U + Send + Copy + 'static,
|
|
T: Send + 'static,
|
|
U: Send + 'static + Default,
|
|
{
|
|
let mut output_vec: Vec<U> = 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);
|
|
}
|