package parallel import ( "sync" ) // Run executes the provided functions in parallel and collects any errors they return. func Run(fns ...func() error) []error { wg := sync.WaitGroup{} errCh := make(chan error, len(fns)) wg.Add(len(fns)) for i := range fns { go func(i int) { if err := fns[i](); err != nil { errCh <- err } wg.Done() }(i) } wg.Wait() close(errCh) var errs []error for err := range errCh { errs = append(errs, err) } return errs }