combineResult<T extends Object> function
Combines an iterable of Results into one containing a list of their values.
If any Result is an Err, applies the onErr
function to combine errors.
Implementation
Result<List<T>> combineResult<T extends Object>(
Iterable<Result<T>> results, {
@noFutures Err<List<T>> Function(List<Result<T>> allResults)? onErr,
}) {
final successes = <T>[];
final asList = results.toList();
for (final result in asList) {
switch (result) {
case Ok(value: final value):
successes.add(value);
case final Err err:
if (onErr != null) {
return onErr(asList);
} else {
return err.transfErr();
}
}
}
return Ok(successes);
}