///|
async fn[W : @core.World] run_pickles_parallel(
factory : () -> W,
pickles : Array[@cucumber_messages.Pickle],
max_concurrent~ : Int,
) -> Array[ScenarioResult] {
let tasks : Array[async () -> ScenarioResult] = pickles.map(fn(pickle) {
fn() -> ScenarioResult { execute_pickle(factory, pickle) }
})
@async.all(tasks[:], max_concurrent~)
}
///|
async fn[W : @core.World + @core.Hooks] run_pickles_parallel_with_hooks(
factory : () -> W,
pickles : Array[@cucumber_messages.Pickle],
max_concurrent~ : Int,
) -> Array[ScenarioResult] {
let tasks : Array[async () -> ScenarioResult] = pickles.map(fn(pickle) {
fn() -> ScenarioResult { execute_pickle_with_hooks(factory, pickle) }
})
@async.all(tasks[:], max_concurrent~)
}