// Copyright 2024 The Flutter team. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /// Utility class to wrap result data /// /// Evaluate the result using a switch statement: /// ```dart /// switch (result) { /// case Ok(): { /// print(result.value); /// } /// case Error(): { /// print(result.error); /// } /// } /// ``` 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)'; }