anyhow 0.7.0 copy "anyhow: ^0.7.0" to clipboard
anyhow: ^0.7.0 copied to clipboard

Inspired by Rust's "anyhow" crate, this Dart package provides versatile error handling, implementing Rust's Result monad and "anyhow" crate functionality

example/main.dart

import 'package:anyhow/anyhow.dart';

void main() {
  //Error.stackTraceDisplayFormat = StackTraceDisplayFormat.full;
  print(order("Bob", 1));
}

Result<String> order(String user, int orderNumber) {
  final result = makeFood(orderNumber).context("Could not order for user: $user.");
  switch (result) {
    // Could also use "if(result.isOk())" and "unwrap()"
    case Ok(:final ok):
      return Ok("Order of $ok is complete for $user");
    case Err():
      return result;
  }
}

Result<String> makeFood(int orderNumber) {
  if (orderNumber == 1) {
    return makeHamburger().context("Order number $orderNumber failed.");
  } else {
    return Ok("pasta");
  }
}

Result<String> makeHamburger() {
  return bail("Hmm something went wrong making the hamburger.");
}

//Output:
// Error: Could not order for user: Bob.
//
// Caused by:
//    0: Order number 1 failed.
//    1: Hmm something went wrong making the hamburger.
//
// StackTrace:
// #0      AnyhowResultExtensions.context (package:anyhow/src/anyhow/anyhow_extensions.dart:12:29)
// #1      order (package:anyhow/test/src/temp.dart:9:40)
// #2      main (package:anyhow/example/main.dart:5:9)
// ... <OMITTED FOR EXAMPLE>
31
likes
0
points
380
downloads

Publisher

verified publishervoyver.com

Weekly Downloads

Inspired by Rust's "anyhow" crate, this Dart package provides versatile error handling, implementing Rust's Result monad and "anyhow" crate functionality

Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on anyhow