A class that for transparent error propagation and handling similar to Rusts result

You can do computations with values without having to check for validity with the map-method.

   final r = const Result<int, String>.ok(2);
   final r1 = => value * 2);

It's also possible to flatMap a function that returns a Result over the value to prevent nesting of Results

   Result<int, String> failable(int i) => i > 5
      ? const Result.err("Some error happened")
      : Result.ok(i * 2);
   final s = const Result<int, String>.ok(10);
   final s1 = s.flatMap(failable);
   assert(s1.containsErr("Some error happened"));

mapErr and flatMapErr provide equivalent functionality for errors.