validate method
Implementation
@override
Future<ValidationResult<U>> validate(T value) async {
final futuristicInvalids = rules.map((e) async {
final application = await e.apply(value);
return application;
}).toList();
final invalids = (await Future.wait(futuristicInvalids.map((e) async => e)))
.whereType<Invalid>()
.toList();
if (invalids.isNotEmpty) {
return invalids.reduce((value, element) =>
Invalid<U>(reasons: [...value.reasons, ...element.reasons]))
as Invalid<U>;
}
return ValidationResult.valid();
}