letAsOrNone<T extends Object> function

Option<T> letAsOrNone<T extends Object>(
  1. dynamic input
)

Casts input to type T, returning None on failure.

Supported types:

Implementation

Option<T> letAsOrNone<T extends Object>(dynamic input) {
  if (input is Outcome) {
    return switch (input.rawSync().value) {
      Ok(value: final okValue) => letAsOrNone<T>(
        NoStackOverflowWrapper(okValue),
      ),
      Err() => const None(),
    };
  }
  final rawInput = input is NoStackOverflowWrapper ? input.value : input;
  return rawInput is T ? Some(rawInput) : const None();
}