TResult<Value>.from constructor

TResult<Value>.from(
  1. dynamic value
)

Constructs a TResult from a dynamic value If the value is TResult it will return the value itself If the value is Value it will return TOk otherwise returns TErr Usage:

final res = TResult<int>.from(1);
assert(res is TOk<int>);
assert((res as TOk).value == 1);

Error Usage:

class TestError extends TError {
  @override
  TError from(dynamic value) {
   return TestError();
  }
}
final res = TResult<int>.from(TestError());
assert(res is TErr);
assert((res as TErr).error is TestError);

Implementation

factory TResult.from(dynamic value) {
  if (value is TResult<Value>) {
    return value;
  } else if (value is Value) {
    return TOk(value);
  } else if (value is TError) {
    return TErr(value);
  } else {
    throw UnimplementedError();
  }
}