| 1 | fn async_map[T](arr []T, func fn (T) T) []T { |
| 2 | mut threads := []thread T{} |
| 3 | for element in arr { |
| 4 | threads << spawn func(element) |
| 5 | } |
| 6 | return threads.wait() |
| 7 | } |
| 8 | |
| 9 | fn test_generic_array_of_threads() { |
| 10 | arr1 := [1, 2, 3, 4] |
| 11 | results1 := async_map(arr1, fn (a int) int { |
| 12 | return -a |
| 13 | }) |
| 14 | println(results1) |
| 15 | assert results1 == [-1, -2, -3, -4] |
| 16 | |
| 17 | arr2 := [1.0, 2.0, 3.0, 4.0] |
| 18 | results2 := async_map(arr2, fn (a f64) f64 { |
| 19 | return -a |
| 20 | }) |
| 21 | println(results2) |
| 22 | assert results2 == [-1.0, -2.0, -3.0, -4.0] |
| 23 | } |
| 24 | |