sealed class Result { const Result(); /// Creates a successful [Result], completed with the specified [value]. const factory Result.ok(T value) = Ok._; /// Creates an error [Result], completed with the specified [error]. const factory Result.error(Exception error) = Error._; } /// Subclass of Result for values final class Ok extends Result { const Ok._(this.value); /// Returned value in result final T value; @override String toString() => 'Result<$T>.ok($value)'; } /// Subclass of Result for errors final class Error extends Result { const Error._(this.error); /// Returned error in result final Exception error; @override String toString() => 'Result<$T>.error($error)'; }