-
Notifications
You must be signed in to change notification settings - Fork 0
/
when.dart
29 lines (27 loc) · 883 Bytes
/
when.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import '../type/err.dart';
import '../type/ok.dart';
import '../type/result.dart';
extension WhenResult<T, E> on Result<T, E> {
/// Invokes [success] or [failure] block
/// depending if this result is a success or a failure.
Result<T, E> when(
{required void Function(T value) success,
required void Function(E error) failure}) {
var result = this;
if (result is Ok<T>) {
success(result.value);
} else {
failure((result as Err<E>).error);
}
return this;
}
}
extension FutureWhenResult<T, E> on Future<Result<T, E>> {
/// Invokes [success] or [failure] block
/// depending if this result is a success or a failure.
Future<Result<T, E>> when(
{required void Function(T value) success,
required void Function(E error) failure}) {
return then((result) => result.when(success: success, failure: failure));
}
}