Skip to content

Provides a robust way of handling operations that may succeed or fail.

License

Notifications You must be signed in to change notification settings

LeadcodeDev/result_pattern

Repository files navigation

Result Pattern

The Result Pattern package for Dart provides a robust way of handling operations that may succeed or fail. By encapsulating the result of an operation in a Result object, this package allows developers to write code that is more predictable, safer, easier to understand and maintain.

Benefits

  • Improved error handling: Encapsulates success and failure results in a single, predictable type. predictable type.
  • Cleaner code: Reduces the need for try-catch blocks, making the code base cleaner and more readable.
  • Composable: Makes it easy to chain several operations together and manage their results in a unified way.

Installation

Add result_pattern to your pubspec.yaml file:

dart pub add result_pattern

Utilisation

Basique

import 'package:result_pattern/result_pattern.dart';

void main() {
  final result = Result.ok(42);
  expect(result.unwrap(), 42);

  final value = switch (result) {
    Ok(:final value) => value,
    Err(:final error) => throw error,
  };

  expect(value, 42);
}

Future usage

import 'package:result_pattern/result_pattern.dart';

AsyncResult<int, Exception> getOkResult() => Result.ok(42);

Future<void> main() async {
  expect(await future.unwrap(), 42);

  // Use pattern matching to extract the value or throw an error
  final value = switch (await future) {
    Ok(:final value) => value,
    Err(:final error) => throw error,
  };

  // Use the match method to handle error cases
  final value = await getOkResult()
    .expect('Error message');

  expect(value, 42);
}

Contribution

Contributions are welcome! Feel free to submit a pull request or open an issue if you have suggestions or find bugs.

License

This package is licensed under the MIT license. See the LICENSE file for more details.

About

Provides a robust way of handling operations that may succeed or fail.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages