Skip to content

Instantly share code, notes, and snippets.

@guid-empty
Created May 7, 2021 09:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guid-empty/e916431502b4d1b5371329fea258cbb1 to your computer and use it in GitHub Desktop.
Save guid-empty/e916431502b4d1b5371329fea258cbb1 to your computer and use it in GitHub Desktop.
SuccessFailure discussion
void main() {
final result = SuccessFailure<void, void>.success(1);
print(result.success);
print(result.failure);
}
typedef Callback<T> = void Function(T value);
class SuccessFailure<S, F> {
factory SuccessFailure.success([S result = null]) {
return SuccessFailure._success(result, null);
}
factory SuccessFailure.failure([F failure = null]) {
return SuccessFailure._failure(null, failure);
}
final bool _isSuccess;
SuccessFailure._success(this._success, this._failure) : _isSuccess = true;
SuccessFailure._failure(this._success, this._failure) : _isSuccess = false;
final S _success;
final F _failure;
bool get isSuccess => _isSuccess;
bool get isFailure => !isSuccess;
S get success => _success;
F get failure => _failure;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment